首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言 sizeof 與指針地址輸出:基本型別大小與 %p 格式

     編輯:關於C

基本型別大小 (32/64 位系統差異)

型別32位 (ILP32)64位 (LP64)備註
char11標準保證 1 byte
short22
int44通常 4 bytes
long48**64位 Linux/macOS 為 8**,Windows 為 4 (LLP64)
long long88C99 保證 ≥ 8
float44IEEE 754 single
double88IEEE 754 double
指針48地址總線寬度

程式碼:輸出型別大小

#include 
int main() {
    printf("char: %zu\n", sizeof(char));
    printf("short: %zu\n", sizeof(short));
    printf("int: %zu\n", sizeof(int));
    printf("long: %zu\n", sizeof(long));
    printf("float: %zu\n", sizeof(float));
    printf("double: %zu\n", sizeof(double));
    printf("int*: %zu\n", sizeof(int*));
    return 0;
}
  • 使用 %zu (C99) 輸出 size_t,避免格式不匹配。
  • sizeof 是**編譯期運算子**,非函式,不計算副作用:sizeof(i++) 不會改變 i。

輸出指針地址

int sum = 99;
printf("sum address: %p\n", (void*)&sum); // 必須轉 void*,%p 要求 void*
// 輸出範例: 0x7ffd12345678 (64位十六進位)
  • %p 格式未標準化輸出格式 (通常十六進位、帶 0x)。
  • 地址受 ASLR (位址空間佈局隨機化) 影響,每次執行不同。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved