Tag: sizeof

错误的字符串长度

我试图得到一个字符串的长度,但我得到错误的值,它说它只有4个字符长。 为什么是这样? 我正确使用sizeof()吗? #include int main(void) { char *s; int len; s = “hello world”; len = sizeof(s); printf(“%d\n”, len); }

知道数组大小的“sizeof”在C中的函数中不起作用

int main() { int laiArreglo[] = {5,8,2,3,1,4,6,9,2,10}, liElemento; printf(“\nInsert the number: “); scanf(“%d”, &liElemento); ShowNumber(laiArreglo); return 0; } void ShowNumber(int laiArreglo[]) { int liContador; printf(“\nNumbers: “); for (liContador = 0; liContador < sizeof (laiArreglo) / sizeof (int); liContador++) { printf("%d ", laiArreglo[liContador]); } } 我在main中使用(sizeof(laiArreglo)/ sizeof(int))并且它工作得很好但是,现在在function内部它不起作用,为什么? 。

为什么数组大小为1

可能重复: C编程语言中数组的大小? 我正在尝试编写一个函数,如果值在数组中,则返回1。 这是代码: int inArrayInt(int iVal, int iArray[]) { int i; int arrayL = sizeof(*iArray) / sizeof(int); int flag = 0; for(i=0; i < arrayL; i++) { if(iVal == iArray[i]) { flag = 1; } } return flag; } 问题是arrayL = sizeof(*iArray) / sizeof(int); 始终求值为1,即使数组包含20个元素。 为什么?

C / C ++:各种编译器/平台的内置类型的大小

我在哪里可以获得有关Mac OS X(32位和64位) gcc下的unsigned int编译大小的信息? 一般来说,我喜欢拥有一个可以使用编译器/设置/平台/类型的资源,并且能够查找该类型的大小。 有谁知道这样的事情? 更新:感谢所有回复。 我希望在某个地方有更多的东西,而不是我必须在每台机器上编写和运行的代码。

使用指针声明的数组大小

char c[] = “Hello”; char *p = “Hello”; printf(“%i”, sizeof(c)); \\Prints 6 printf(“%i”, sizeof(p)); \\Prints 4 我的问题是: 为什么这些打印出不同的结果? 不是c[]也声明一个指向数组第一个字符的指针(因此它的大小应该是4,因为它是一个指针)?

在不编译和执行代码的情况下找到类型大小的最简单方法是什么?

我写了一个bash脚本来确定gcc的数据类型的大小(例如./sizeof int double输出int和double的相应大小),方法是将它的每个参数包装在下面的P()宏中,然后编译并运行代码。 #define P(x) printf(“sizeof(” #x “) = %u\n”, (unsigned int)sizeof(x)) 问题是这是相对慢的(需要一整秒!),特别是链接步骤(因为用-c或-S编译几乎没有时间,运行输出的二进制也是如此)。 一秒钟本身并不是那么慢,但如果我在其他脚本中使用这个脚本,它会加起来。 是否有更快,更简单的方法来找出gcc用于数据类型的大小?

数组长度问题

我正在阅读csc展示文件,其中我读了一个与c语言数组的sizeof()运算符相关的问题。 答案是别的,然后我期待它。 int DIMension(int array[]) { return sizeof(array )/ sizeof(int); } main() { int arr[10]; printf(“Array dimension is %d”, DIMension(arr)); } 这个c语言程序打印1作为答案。 为什么会这样?

strlen()应该在这段代码中返回什么?

#include #include #include int main(void) { char qq[] = {‘a’ , ‘b’ , ‘c’ , ‘d’}; char qqq[] = “abcd”; printf(“%d\n” , sizeof qq / sizeof qq[0]); // line A printf(“%d\n” , strlen(qq)); // line B printf(“%d\n” , sizeof qqq / sizeof qqq[0]); // line C printf(“%d\n” , strlen(qqq)); // line D system(“pause”); return 0; […]

在函数上使用sizeof的输出

为什么以下代码给出: #include int voo() { printf (“Some Code”); return 0; } int main() { printf (“%zu”, sizeof voo); return 0; } 以下输出: 1

为什么sizeof(char + char)返回4?

char a, b; printf(“%d”, sizeof(a+b)); printf写入屏幕的内容是什么? 我认为因为sizeof(char)= 1,sizeof(a + b)也将是1,但结果是4.我不明白这一点,如果我们添加两个字符,为什么写4?