Tag: sizeof

sizeof(array)/ sizeof(int)

在函数中我声明了一个数组: int char_count_array[118] = {0}; 稍后,我将此数组传递给函数并计算以下内容: int xx = sizeof(char_count_array); int xy = sizeof(char_count_array)/sizeof(int); 但是,我得到的结果是: xx = 4 xy = 1 我以为我会得到: xx = 472(118 * 4)xy = 118(472/4) 。 谁会知道我在这里做错了什么?

试图在C中围绕字符串大小包裹我的脑袋

我和一个朋友正在为大学做一个C编程单元。 我们知道C中本身没有“字符串”,相反,字符串是由字符数组定义的。 真棒! 所以当处理“字符串”时,很明显正确理解数组和指针很重要。 我们正在很好地理解指针声明,何时何时不取消引用指针,并使用一些printf来测试我们的实验。 一切都很成功。 但是,当我们使用它时: char *myvar = “”; myvar = “dhjfejfdhdkjfhdjkfhdjkfhdjfhdfhdjhdsjfkdhjdfhddskjdkljdklc”; printf(“Size is %d\n”, sizeof(myvar)); 它吐出的Size is 8 ! 为什么8? 显然’myvar’消耗了超过8个字节(或者是它)? (我应该清楚并指出我非常清楚’strlen’。这不是获取字符串长度的练习。这是为了理解为什么sizeof为变量myvar返回8个字节。)

如何在C中找到动态分配的数组的大小?

我创建了一个由循环动态分配的数组。 然后是一个循环,从数组中读取数字,但我需要知道数组的大小。 该数组正确且完全正常,并且其中包含正确的值。 我像这样定义了数组: int *array; 现在当我想使用它时它不会工作因为我使用指针: int size = sizeof(array)/sizeof(array[0]); 我如何修复它,以便它与我的指针一起工作?

请解释sizeof()的输出

我是c编程的新手,我正在尝试理解sizeof函数。 请帮我理解这个程序是如何工作的: #include main( ) { printf ( “\n%d %d %d”, sizeof ( ‘3’), sizeof ( “3” ), sizeof ( 3 ) ) ; } 我输出为4 2 4 。 但是,我无法理解我得到此输出的原因。 请解释一下。

为什么short在C中的结构中存储为4个字节?

我有以下两种结构: 问题是sizeof(Content)返回160.结构由11个短路,6个整数,76个字符,7个浮点数,1个双精度组成,总共增加到158个字节。 我已计数三次,仍有2个字节的差异。 typedef struct TIME_T { short year,mon,day; short hour,min,sec; } TIME; typedef struct { int no; char name[20]; char Code[10]; char DASType[10]; short wlen; float VLtd; int samp; int comp; int locationID; short TranMode; char TranIns[12]; short TimerMode; char ClkType[12]; float ClkErr; float lat; float lon; float alt; float azimuth,incident; short weight; short […]

sizeof应用于数组类型

c11标准说尺寸, “当应用于具有数组类型的操作数时,结果是数组中的总字节数” (6.5.3.4,子弹4)。 脚注(103)说: “当应用于声明具有数组或函数类型的参数时,sizeof运算符会产生调整后的(指针)类型的大小”。 我从中可以看出,当应用于数组类型时,sizeof给出了数组的大小(元素的数量x元素的大小),但是应用于声明为具有数组类型的参数,它给出了指针的大小。 我的问题: 由于脚注,如何使数组类型的对象不会产生指针的大小? 在不知情的情况下,我觉得在某些情况下我无法信任sizeof运算符。 谢谢。 编辑:我想我应该澄清我的担忧,如果定义了“int a [4]”,那么我从响应中看到a == 4 * sizeof(int)的sizeof,但是sizeof(a + 0)呢? 看来sizeof(a + 1)必须被评估为指针。 我担心除了函数调用之外的情况,其中数组衰减到指针。

字符串“sizeof”的意外结果

为什么在以下情况下sizeof会打印不同的值: printf(“%d”,sizeof(“ab”)); //print 3 char* t=”ab”; printf(“%d”,sizeof(t)); //print 4 在第一种情况下,我有2个字符…不应该sizeof打印2? 因为它们是2个字节?

sizeof C中的整数表达式

用Xcode编译C(gnu11)让我半惊喜 #include int main(int argc,char**argv) { short s = 1; printf( “%zd %zd %zd\n”, sizeof(s), sizeof(s*s), sizeof(s?s:s)); return 0; } 产生输出 2 4 4 我在期待 2 2 2 或者可能 2 4 2 为什么是这样?

为什么sizeof(int)== sizeof(long)?

在下面列出的程序中,sizeof(int)和sizeof(long)在我的机器上是相等的(都等于4个字节(或32位))。 据我所知,很长一段是8个字节。 它是否正确? 我有一台64位机器 #include #include int main(void){ printf(“sizeof(short) = %d\n”, (int)sizeof(short)); printf(“sizeof(int) = %d\n”, (int)sizeof(int)); printf(“sizeof(long) = %d\n”, (int)sizeof(long)); printf(“sizeof(float) = %d\n”, (int)sizeof(float)); printf(“sizeof(double) = %d\n”, (int)sizeof(double)); printf(“sizeof(long double) = %d\n”, (int)sizeof(long double)); return 0; }

具有灵活数组成员的结构的大小

特定 struct Foo { uint32_t a; uint32_t b[]; }; 什么是sizeof(Foo) ? 是实现定义还是未定义的行为? 对C和C ++的答案有何不同?