sizeof(陣列名)及strlen(陣列名)
阿新 • • 發佈:2018-12-30
程式的輸出結果為:
1:100
2:43:1 //相當於a[100]這個數所佔的位元組大小,也就是一個char位元組佔得大小
當陣列作為函式的引數進行傳遞時,該陣列自動退化為同類型的指標。不論陣列a的容量是多少,sizeof(a)始終等於sizeof(char *)。
func(char* p) { strcpy(p, "1234"); } int main() { char ch[100] = {0}; func(ch); a = sizeof(ch); b = strlen(ch); printf("a = %d, b = %d\n", a, b); }
執行結果:
a = 100, b = 4
if 陣列名直接作為引數壓棧
then sizeof(陣列名) = 一個指標所佔位元組數
else sizeof(陣列名) = 陣列所佔位元組數
測試程式如下:
程式的輸出是:typedef struct{ char array[32]; }node_t; void fun1(node_t node) { printf("%d/n", sizeof(node.array)); } void fun2(char array[32]) { printf("%d/n", sizeof(array)); } int main(void) { node_t node; fun1(node); // indirect fun2(node.array); // direct return 0; }
32
4