我试图将一个函数的返回值赋给变量,问题是这个返回值是一个数组,我知道它会返回一个指针,但是正如你在下面看到的,我就是做不到适当的分配,我看了很多问题,但似乎没有得到我需要的。所以这是我的功能:
int randn(int n, int l){
int r[n];
int i;
for ( i=0; i<n; i++){
r[i]=rand() % l;
r[i]++;
}
return *r;
}
我相信这个功能没问题,但是当我尝试这样做时 int *o; o=randn(n,l);
我收到这个警告:
warning: assignment makes pointer from integer without a cast [enabled by default]
当我执行它时,出现段错误。 这可能是一个愚蠢的问题,但我已经尝试解决这个问题很长时间了。我会很感激一些帮助。 提前谢谢你。
最佳答案
这不是从函数指向指针的正确方法。此外,r
是局部变量,其生命周期仅限于函数。使用 malloc
分配内存并返回它:
int* randn(int n, int l){
int *r=malloc(n * sizeof *r);
if(!r) { */ error */}
int i;
for ( i=0; i<n; i++){
r[i]=rand() % l;
r[i]++;
}
return r;
}
请注意,我还更改了签名以返回一个指针 (int*
)。调用方负责free()
内存。
关于c - C 中的函数和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30958274/