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/

10-10 12:37