C 数组的len始终为2 int*a[4]={ (int[]){1}, (int[]){-4,-5}, (int[]){-4,-5,0}, (int[]){1,3,4,6} }; 对于(i=0;i
我知道这不是一个正确的方法,但len总是2。有人能解释为什么len两岁吗?它是一个未定义的行为吗?如果不是,它是如何计算的?C 数组的len始终为2 int*a[4]={ (int[]){1}, (int[]){-4,-5}, (int[]){-4,-5,0}, (int[]){1,3,4,6} }; 对于(i=0;i,c,multidimensional-array,C,Multidimensional Array,我知道这不是一个正确的方法,但len总是2。有人能解释为什么len两岁吗?它是一个未定义的行为吗?如果不是,它是如何计算的?a[i]是指向int的指针sizeof(a[i])将返回sizeofint*,而不是它所指向的数组。在64位计算机上,指针的大小为8字节,int的大小为4字节8/4=2哦,是的。这很简单。我不知道为什么它弄糊涂了我的头。无论如何,谢谢。如果你的代码中没有多维数组。是的,就是指针数组。我自己标记了要删除的问题。你不需要自己标记要删除的问题,相反,你可以选择实际删除它,因为你是
a[i]
是指向int
的指针sizeof(a[i])
将返回sizeofint*
,而不是它所指向的数组。在64位计算机上,指针的大小为8
字节,int
的大小为4
字节<代码>8/4=2哦,是的。这很简单。我不知道为什么它弄糊涂了我的头。无论如何,谢谢。如果你的代码中没有多维数组。是的,就是指针数组。我自己标记了要删除的问题。你不需要自己标记要删除的问题,相反,你可以选择实际删除它,因为你是问题的作者。如果问题有答案,你不能删除它。
int *a[4] = {
(int[]){ 1},
(int[]){ -4, -5},
(int[]){ -4, -5, 0},
(int[]){ 1, 3, 4, 6}
};
for (i = 0; i < 4; i++)
len = sizeof(a[i])/sizeof(int);