程式的輸出結果為:
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陣列的...