Possible Duplicate:
How to get the size of dynamically allocated 2d array
我找不到我做错了什么。我想创建一个数组,其大小基于用户输入,从用户输入中获取数组的数据(整数),并打印数组整数。
问题是它只打印第一个数组元素,即intArr[0]
。
int main()
{
int i, n, *intArr;
printf("Type the array size:\t");
scanf("%d", &n);
intArr = (int *)malloc(n * sizeof(int));
for (i = 0; i < n; ++i)
{
printf("Type a number\t");
scanf("%d", intArr + i);
}
printArr(intArr);
}
void printArr(int *arr)
{
int i;
for (i = 0; i < (sizeof(arr) / sizeof(*arr)); ++i)
printf("%d ", *(arr + i));
}
最佳答案
arr
的类型是int*
所以sizeof(arr)
将是sizeof(int*)
而不是arr
中元素的数量。在系统上,sizeof(int*)
和sizeof(int)
是相同的,结果是1,所以循环只打印一个元素。
将元素数作为参数传递给printArr()
函数。
注:
你所拥有的。
铸造返回值free()
是不必要的。
检查malloc()
的返回值以确保成功。
关于c - C中的打印数组功能仅打印第一个元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12722658/