動態分配的陣列使用sizeof

2021-09-21 13:46:36 字數 988 閱讀 9994

#include #include #include int main()

; int *b;

b=(int *)malloc(5*sizeof(int));//malloc需要呼叫memset(b,0,5*sizeof(int));//memset需要呼叫printf("sizeof(a)=%d\n",sizeof(a));

printf("sizeof(b)=%d\n",sizeof(b));

return 0;

}

執行結果:

sizeof返回的是位元組數。可以看到,sizeof(a)是20個位元組,sizeof(b)是4個位元組,也就是說sizeof(b)只是求出了指標b的大小。

mark一下,這樣用sizeof()無法求出動態分配陣列的大小。

產生這個疑惑的原因是,我用memset(b,0,sizeof(b))的時候,發現只有b[0]被賦值為0,後面的都沒有被賦值為0。

動態分配陣列

注意,刪除操作不會刪除該指標 它刪除指標所指向的記憶體!動態分配陣列 動態陣列的宣告讓我們執行程式時選擇自己的大小。動態分配陣列,我們使用新的和刪除陣列形式 通常稱為新的 和 刪除 123 4int nsize 12 int pnarray new int nsize note nsize does...

動態分配空陣列

c 雖然不允許定義長度為0的陣列變數,但明確指出,呼叫new動態建立長度為0的陣列是合法的。char arr 0 錯誤 char cp new char 0 正確 用new動態建立長度為0的陣列時,new返回有效地非零指標。該指標與new返回的其他指標不同,不能進行解引用操作,它畢竟沒有指向任何元素...

動態分配記憶體(陣列)

已知正整數n,你要利用malloc函式動態開闢乙個長度為n的整型陣列,然後讀取n個整數存入該陣列中。再將這n個整數全部改為其相反數 例如10的相反數是 10,10的相反數是10 的10倍,然後將其輸出。最後你要利用free函式將該動態陣列所占用的空間釋放。int a,n scanf d n a in...