**stdlib庫中動態分配的函式malloc,calloc,realloc回傳void指標
我想將重新調整的 void 指標轉換為陣列指標是否可以這樣做**
void* x=malloc(6*sizeof(int));
int (*ptr)[3];
我們可以對 x 進行型別轉換并將其分配給 ptr 嗎?
uj5u.com熱心網友回復:
您可以通過賦值隱式轉換x為:ptr
int (*ptr)[3] = x;
或使用顯式強制轉換:
int (*ptr)[3] = (int (*)[3]) x;
就像x指向 6 個整數陣列的指標一樣,我不確定你為什么想要指向前 3 個整數的指標。 gcc -Wall -Wextra ...甚至不會為越界訪問生成警告,printf("%d\n", (*ptr)[4]);那么為什么要使用 aa plainint *ptr呢?
int *ptr = malloc(6 * sizeof(int));
uj5u.com熱心網友回復:
這樣做的“正常”方法是
int *ptr = malloc(6*sizeof(int));
或許
int *ptr = malloc(3*sizeof(int));
因為你似乎不知道你想要 3 個還是 6 個整數
uj5u.com熱心網友回復:
6 的一維陣列int:
int* arr = malloc(6 * sizeof *arr);
...
arr[i] = something;
...
free(arr);
2x3 的二維陣列int:
int (*arr)[3] = malloc( sizeof(int[2][3]) );
...
arr[i][j] = something;
...
free(arr);
在任何一種情況下,都不需要 avoid*作為中間步驟。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/462785.html
上一篇:宣告一個字符指標
下一篇:何時取消參考
