【发布时间】:2013-04-07 20:46:19
【问题描述】:
我是指针新手,所以我有点问题。我有一个简单的程序来打印 0-100 之间的随机 int 值。但它只打印第一个值,然后我得到一个分段错误(核心转储)
#include <stdio.h>
#include <stdlib.h>
void printArray(int **array, int size)
{
int i;
for (i=0; i<size; i++)
{
printf("index[%d] = %i \n",i,*array[i]);
}
}
int main()
{
int size = 10;
int *array = (int *) malloc (sizeof(size));
int i;
for (i=0; i<size; i++)
{
array[i] = rand() % 100 + 1;
}
printArray(&array,size);
free(array);
return 0;
}
我真的不知道为什么,任何帮助。谢谢:)
【问题讨论】:
-
我不建议转换
malloc的结果。 -
错误 ->
int *array = (int *) malloc (sizeof(size));正确 ->int *array = malloc (sizeof(*array * size)); -
一点建议:除非您打算更改指针本身,否则您应该只传递指针本身而不是指向它的指针。这样一来,您就省去了
&和两个*(还有一些混乱)