我希望能够向此代码的用户询问数组的四个值。我有一些代码,但是它显示了我似乎无法解决的错误。我正在尝试按照此视频教程中的示例https://youtu.be/IPYA3b3_nyk?list=PL6gx4Cwl9DGAKIXv8Yr6nhGJ9Vlcjyymq建模一些代码,但是,似乎无法正确编译它。
错误如下: 在“主要”功能中: intitializeint.c:12:9:警告:格式'%d'期望类型为'int'的参数,但是参数2的类型为'int *'[-Wformat =] printf(“输入值%d。\ n”,&i +`); ^
我尝试为每个提示输入值使用printf()和scanf(),但发现本教程并尝试模仿它。我已经尝试过重新排列“&i + 1”,但是它只会向后弹出相同的错误。我希望有一个增量,以便在输出中显示好像数组从1开始。
#include <stdio.h>
#include <stddef.h>
void printArray(int n[]);
int main(void)
{
int i;
int n[4];
for (i = 0; i < 5; ++i) {
printf("Enter value %d. \n", &i+1);
scanf("%d", &n[i]);
}
printf("%s%13s\n", "Element", "Value");
printArray(n);
return 0;
}
void printArray(int n[])
{
int i;
for (size_t i = 0; i < 4; ++i) {
printf("%7zu%13d\n", i, n[i]);
}
}
答案 0 :(得分:0)
当您写&i
时,您不小心创建了一个指向i
的指针。您的指针的类型为int *
,因为它是一个指向int的指针。 %d
格式说明符期望一个int,而不是一个指向int的指针,因此这就是编译器给您该错误的原因。 (您应该重新读取该错误,并确保现在对每个单词都完全有意义。)
解决方案是删除错误的&
运算符:
printf("Enter value %d.\n", i + 1);