Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:c:sizeof

sizeof


// sizeof 的使用方式
 
// 1. 传入数据类型
sizeof(int)     // int 通常为 4
sizeof(void*)   // 在 64 位系统上通常为 8
 
// 2. 传入变量
int x;
sizeof(x); // 等价于 sizeof(int),返回 4
 
// 3. 传入整个数组:计算的是字节数,不是元素数量
int arr[10];
sizeof(arr); // 返回整个数组所占字节数 = 10 * sizeof(int) = 40(假设 int 是 4 字节)
 
// 4. 传入数组和指针的区别
int arr[10];
int* p = arr;
 
sizeof(arr); // 返回整个数组大小,10 * sizeof(int) = 40
sizeof(p);   // 返回指针大小(通常为 8 在64位系统)
 
void func(int arr[]) { // 特别注意:
    sizeof(arr); // 实际是 sizeof(int*),因为数组退化成了指针
}
 
// 5. 传入类或结构体
struct A {
    char a;
    int b;
};
 
sizeof(A); // 通常是 8,而不是 5,结构体会按平台对齐补齐空隙
 
// 6. 计算数组长度
int arr[10];
size_t count = sizeof(arr) / sizeof(arr[0]);  // = 10
 
// 7. sizeof 不会实际计算表达式或函数
int foo() { std::cout << "called\n"; return 42; }
 
sizeof(foo());  // 不会调用 foo(),因为 sizeof 在编译时计算
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/c/sizeof.txt · Last modified: 2025/07/12 16:28 by zhonghui