【发布时间】:2014-12-09 05:41:00
【问题描述】:
初学者问题。我对指针有所了解,但是在尝试使用函数中的指针打印数组的值时遇到了很多麻烦。 特别是在这一行: printf("\n%d\t\t%d\t0x%X", i+1, *(arr+i) , arr);我的输出是一个表格,显示输入计数、用户输入的值以及存储的地址。地址看起来不错,但值打印垃圾。我认为在尝试使用索引 i 递增指针数组时语法 *(arr+i) 是正确的??
#include<stdio.h>
#include <stdlib.h>
void function(int *arr[]);
main()
{
int array[5];
function(&array);
}
void function(int *arr[])
{
int i, n;
printf("How many elements? ");
scanf("%d", &n);
for(i=0; i<n; i++)
{
printf("Enter element %d: ", i);
scanf("%d", arr);
arr++;
}
printf("\nInput\t\tValue\tAddress");
for(i=0; i<n; i++)
{
printf("\n%d\t\t%d\t0x%X", i+1, *(arr+i) , arr);
arr++;
}
}
【问题讨论】:
-
int *arr[]等价于int **arr,一个指向(数组)指针的指针。编译器应该在调用时生成警告,因为&array的类型为int *。