簡體   English   中英

動態數組在另一個函數中分配

[英]Dynamic array allocated in another function

我試圖了解動態內存如何在C中工作。假設我需要使用另一個函數為某些指針分配內存。 可能嗎? 我試過下面的程序,但它在Windows中一直崩潰。

void foo(int** x){
    *x=(int *)malloc(10*sizeof(int));
    int i;
    for(i=0; i<10; i++){
        *x[i] = 0;
    }
}

int main(int argc, char* argv[]){

    int *x;
    int i;
    foo(&x);
    for(i=0; i<10; i++){
        printf("%d\n",x[i]);
    }
    return 0;

}

問題出在這條線上。

*x[i] = 0;

在指針取消引用中添加括號。

(*x)[i] = 0;

這是因為x [i]實際上意味着*(x + i)。 也就是說,將i添加到指針x以獲取新指針並獲取該內存位置的值。

現在請記住,x是指向指針的指針。 當你想要*((*x)+i)時, *x[i]可以更容易被理解為**(x+i) *((*x)+i)

一旦你掌握了它,可能需要一些思考來解決問題,但指針很容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM