[英]C Function returning pointer and a dynamic array
我有一個函數可以創建一個動態數組,其大小為我選擇的整數。 代碼:
int *create(int n) {
int *nn;
nn = (int*)malloc(n*sizeof(int));
return nn;
}
我在main()
這樣稱呼它
int *nn
int n = 5; /* size = 5 */
nn = create(n);
我想我得到了int *create(...)
部分,它應該將地址返回到我返回的 nn 的第一個位置。 但是我想知道,有沒有辦法在函數中不使用指針而是修改return nn;
部分以便我仍然返回動態數組nn
的地址?
我想刪除*
在*create
您可以修改代碼以設置按地址傳遞給函數的指針,如下所示:
void create(int n, int** res) {
*res = malloc(n*sizeof(int));
}
以下是您現在調用此函數的方式:
int *nn
int n = 5;
create(n, &nn);
我只想使用一個參數,並且能夠通過
return
。
你可以直接返回malloc
的結果,因為這就是你的函數所做的一切:
int *create(int n) {
return malloc(n*sizeof(int));
}
該調用也可以與聲明結合使用:
int n = 5;
int *nn = create(n);
當然,如果你這樣做,你還不如做慣用語
int *nn = malloc(n*sizeof(*nn));
並完全刪除create
功能。
你可以這樣做:
int *create(int n)
{
return malloc(n*sizeof(int));
}
這樣您就不需要在create()
函數中使用臨時變量。 但是我認為創建一個只調用malloc
的函數沒有意義。
如果你希望你的函數返回一個整數數組,你需要你的函數采用int *create()
的形式,因為一個數組可以被認為是指向它的第一個元素的指針,在你的情況下是一個整數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.