現在我可以指望使用var_num=sizeof(var)/sizeof(var[0]);
第一維它通過我haved研究和正在使用我的代碼,但問題是我不知道它是如何工作的,在我的輸出方式它顯示20/4 = 5
和我想不通的地方是20和4來做到了,我只想問如何做這些值被sizeof(var)
和sizeof(var[0])
進賬,這是什麼均值爲零,是指的第一或第二尺寸?計數多維數組的第一個維度
#include <stdio.h>
#include <conio.h>
void main(){
char *var[][2]={
{"var0-0","var0-1"},
{"var1-0","var1-1"},
{"var2-0","var2-1"},
{"var3-0","var3-1"},
{"var4-0","var4-1"},
};
int var_num=sizeof(var)/sizeof(var[0]);
clrscr();
printf("%d/%d = %d",sizeof(var),sizeof(var[0]),var_num);
getch();
}
這些值很難相信。我在32位機器上得到了'40/8 = 5'。 40是總大小,8是一個條目的大小(這是一個char * [2]',所以我在我的第一維中有5個元素,如果你在同一行上做同樣的事情,你會得到'8/4 = 2',因爲一行由2個條目組成,每個條目4個字節。 – glglgl
在64位機器上,結果是'80/16 = 5'或'16/8 = 2'。 – glglgl
也許你的輸出來自你的程序的前一版本在陣列中只有一個二分之一的缺陷 – glglgl