sizeof 陣列名 及strlen(陣列名)

2021-06-26 01:45:25 字數 686 閱讀 6221

程式的輸出結果為: 

1:100 

2:4 

3:1   //相當於a[100]這個數所佔的位元組大小,也就是乙個char位元組占得大小 

當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。不論陣列a的容量是多少,sizeof(a)始終等於sizeof(char  *)。 

func(char* p)

int main()

; 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 structnode_t;

void fun1(node_t node)

void fun2(char array[32])

int main(void)

程式的輸出是:324

sizeof 陣列名 和sizeof 指標

在做這道題時 32位環境下,int p new int 10 請問sizeof p 的值為 a 4 b 10 c 40 d 8 我以為正確答案為c,int型別為32位,佔四個位元組,10個自然就是40了,結果正確答案為a,只是指標p佔的空間。因此寫段 測試一下 cpp view plain copy...

sizeof 陣列名 和sizeof 指標

在做這道題時 32位環境下,int p new int 10 請問sizeof p 的值為 a 4 b 10 c 40 d 8 我以為正確答案為c,int型別為32位,佔四個位元組,10個自然就是40了,結果正確答案為a,只是指標p佔的空間。因此寫段 測試一下 cpp view plain copy...

sizeof 陣列名 and sizeof 指標

看一下 include using namespace std void hehe int p cout 由此可見,陣列名並不是完全等同於指標。雖然它們都可以通過指標方式訪問陣列。但是陣列在作為函式引數傳遞過程中,會退化成指標。這也是為什麼指標作為引數傳遞時,經常要乙個長度。最後,c 中new陣列的...