我有一个函数定义,使用scanf通过用户获取数组的值 . 这就是我所拥有的
void readInArray(int *arr, int size) {
int i;
printf("Enter your list of numbers: ");
for (i = 0; i < size; i++) {
scanf("%f", arr[i]);
printf("%d\n", arr[i]);
}
}
当我尝试打印数组时,我在scanf的行中出现错误,说“格式指定类型'浮点*',但参数的类型为'int'” . 我尝试将%f更改为%d,以便scanf和printf都有同一个地方持有人
void readInArray(int *arr, int size) {
int i;
printf("Enter your list of numbers: ");
for (i = 0; i < size; i++) {
scanf("%d", arr[i]);
printf("%d\n", arr[i]);
}
}
但我仍然得到同样的错误 . 我怎样才能解决这个问题?
2 回答
看起来你需要在arr [i]之前添加&:
函数
scanf()
将stdin
的输入放置到您告诉它的任何位置 . 您在scanf()
中提供的第二个参数不是指向用户输入应该去的位置的指针 -arr[i]
是一个整数 . 格式化后的第二个参数需要是指针 .所以,你想要的东西如下:
要么
对于第一种情况,将数组作为参数传递与将指针传递给数组所在的连续内存块中的第一个元素相同 . 按整数递增将转到下一个元素 .
第二种情况是首先提供数组中第i个元素的值,
arr[i]
,然后&符号在内存中给出该元素所在位置的地址 - 所以指针 .