【发布时间】:2023-04-07 20:45:01
【问题描述】:
我希望能够向使用此代码的用户询问数组的四个值。我有一些代码,但它会打印一个我似乎无法解决的错误。我正在尝试按照本视频教程中的示例对我的一些代码进行建模:https://youtu.be/IPYA3b3_nyk?list=PL6gx4Cwl9DGAKIXv8Yr6nhGJ9Vlcjyymq,但是,我似乎无法让它在没有错误的情况下编译。
错误如下: 在函数'main'中: 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到3,包括),但你的输入循环上升到索引4。 -
关于:
&i+1在对printf()的调用中需要传递实际值,而不是值的地址。建议:printf("Enter value %d. \n", i+1);注意,没有address of(&) 运算符。 -
关于:
for (i = 0; i < 5; ++i) {在 C 中,数组的有效索引是 0...(数组中的元素数 -1)因为在 C 中,数组总是从 0 开始索引的。建议:for (i = 0; i < 4; ++i) { -
OT:发布的代码包含一些“神奇”数字。 “魔术”数字是没有基础的数字。 IE。 4, 5. 'magic' numbers 使代码更难理解、调试等。建议使用
enum语句或#define语句为这些'magic' 数字赋予有意义的名称,然后在整个过程中使用这些有意义的名称代码
标签: c