当我尝试运行程序时它崩溃了,但它打印了数字。这是为什么?
void z(int **k)
{
int i;
*k=malloc(20*sizeof(int));
for (i=0;i<20;i++)
*k[i]=10;
}
int main()
{
int *k,i;
z(&k);
for (i=0;i<20;i++)
printf("%d\n",k);
return 0;
}
最佳答案
问题出在
*k[i]=10;
按照先后顺序,应该是,
(*k)[i] = 10;
下标运算符的优先级高于间接运算符。参见 Operator Prececence Rules.
此外,在 main 的 printf 中,您正在打印 printf("%d\n",k)
。这将打印数组的基址。如果你想要你应该使用的值
printf("%d\n",k[i]);
关于c - 使用 void 返回数组的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34891662/