Tag: sizeof

这里发生了什么? sizeof(short_int_variable + char_variable)

#include int main() { short int i = 20; char c = 97; printf(“%d, %d, %d\n”, sizeof(i), sizeof(c), sizeof(c + i)); return 0; } 有人可以告诉我当sizeof(a + b)“a是短int类型&b是char类型时会发生什么”输出是:2,1,4

sizeof()后面的逻辑用于字符常量和函数名称

在C中 ,以下代码: #include int main() { char c=’a’; printf(“%d %d”,sizeof(c),sizeof(‘a’)); return 0; } 产生结果1和4 ? 请解释逻辑? 另外,为什么sizeof(main())导致4而sizeof(main)导致1 : #include int main() { printf(“%d %d\n”,sizeof(main), sizeof(main())); return 0; } 在C ++中为什么sizeof(‘a’)导致1但sizeof(’av’)导致4?

C中Sizeof的行为

我已经了解到,当我们将数组名称传递给sizeof时,数组的名称不会衰减到指向基址的指针。 下面的代码通过给出答案10来validation这一事实。 #include int main(){ int arr[10]; printf(“Size of array is %d” , sizeof(arr)/sizeof(int)); return 0; } 然而,当我运行下面的代码时,答案是1.无论维度是否是用原型编写,答案都是1.为什么会这样? #include void dimension(int arr[]){ printf(“Sizof array is %d” , sizeof(arr)/sizeof(int)); } int main(){ int arr[10]; dimension(arr); return 0; }

如何找到结构的大小?

struct a { char *c; char b; }; sizeof(a)是什么?

在C中不使用sizeof查找数组的大小

我正在寻找一种方法来在C中查找数组的大小而不使用C中的sizeof ,我找到了以下代码: int main () { int arr[100]; printf (“%d\n”, (&arr)[1] – arr); return 0; } 任何人都可以请你解释一下它是如何工作的?

如果在int之后出现char,为什么要添加填充?

例如,有一种结构 struct A { char a; int i; }; 在这种情况下,我们有[1字节] +填充[3字节] + int [4字节] = 8。 现在让我们对上面的struct进行一些更新, struct A { int i; char a; }; 在这种情况下,char来自int并且不需要添加填充字节,这意味着sizeof(A)= 5字节,但在这种情况下我也得到8字节的结果。 为什么? 好的,这个案子怎么样 struct s { int b; double c; char a; }; 根据下面给出的逻辑,有一个: size = b[4 bytes] + padding[4 bytes] + c[8] + a[1] + padding[7 bytes to […]

如何以字节为单位获取字符串大小?

正如标题所暗示的,我的问题是如何在C获取字符串的大小。 如果我在没有malloc的函数中声明它(字符串),那么使用sizeof是否malloc ? 或者,如果我已将其声明为指针? 如果我用malloc初始化它会怎么样? 我想做一个详尽的回复。

`sizeof`的操作数是用VLA评估的吗?

这个答案的评论部分中的一个论点促使我提出这个问题。 在以下代码中, bar指向可变长度数组,因此sizeof是在运行时而不是编译时确定的。 int foo = 100; double (*bar)[foo]; 参数是关于当操作数是可变长度数组时是否使用sizeof评估其操作数,使得当未初始化bar时, sizeof(*bar)未定义行为。 是否使用sizeof(*bar)是未定义的行为,因为我正在取消引用未初始化的指针? 当类型是可变长度数组时,是否实际评估了sizeof的操作数,还是只确定了它的类型( sizeof通常如何工作)? 编辑:每个人似乎都在引用C11选秀中的这段话 。 有谁知道这是否是官方标准中的措辞?

sizeof如何知道操作数数组的大小?

这可能是一个愚蠢的问题,但是当你没有传入数组中的元素数量时,sizeof运算符如何知道数组操作数的大小。 我知道它不会返回数组中的总元素,而是以字节为单位返回大小,但为了得到它,它仍然必须知道数组何时结束。 只是好奇这是如何工作的。

为什么我不能在预处理器条件下使用sizeof?

我知道sizeof是一个运算符,它在编译时被计算为整数常量。 但它似乎不能在#if预处理器指令中使用,如: #if 4 == sizeof(int) typedef int Int32; #endif (cygwin-gcc 3.4.4以及Visual C ++ 6.0报告编译错误) 为什么不允许这样的使用?