【发布时间】:2020-11-02 06:55:07
【问题描述】:
我在教科书中了解到,初始化数组的方法只有几种。
方法一:
int ary[5] = {1,2,3,4,5};
方法二:
int ary[] = {1,2,3,4,5};
但是如果我想将用户定义的值输入到数组中怎么办。这段代码可以吗?谁能教我一个更好的方法来做到这一点?
#include<stdio.h>
#include<conio.h>
int main()
{
int i, n;
printf("Enter array parameter: \n");
scanf("%d",&n);
int a[n];
int b[n];
for(i=0;i<n;i++)
{
printf("Enter value for array a[%d]: \n",i+1);
scanf("%d",&a[i]);
}
n -= 1;
for(i=0;i<=n;i++)
{
b[i]=a[n-i];
}
printf("Value of array b[] is: \n");
for(i=0;i<=n;i++)
{
printf("%d ",b[i]);
}
for(i=0;i<=n;i++)
{
printf("\narray b[%d] = %d ",i,b[i]);
}
getch();
}
【问题讨论】:
-
int ary[5] {1,2,3,4,5};- 你不能在 C 中做到这一点。它在 C++11 中有效 -
您的代码很脆弱。您不能使用任何用户输入功能,例如
scanf("%d",&n)正确,除非您检查返回,例如if (scanf("%d",&n) != 1) { fputs ("error: invalid integer input.\n", stderr); return 1; }否则,请理解您使用的是可变长度数组 (VLA),并非所有从 C11 开始的编译器都支持它。不要包含conio.h,那个古老的 DOS 标头使您的代码 100% 不可移植到窗口以外的任何地方。stdio.h提供您所需的一切。只需使用getchar()来保持窗口打开,而不是使用getch()。 -
我理解了,但 C11 是什么?我使用 Dev C++ 5.11。人们一直在谈论的编译器版本是什么?
-
您的输出只是纯文本。无需添加屏幕截图,而只需将其作为文本复制并粘贴到您的问题中。
-
C11 是 C 标准的 2011 版本。但要注意,第一条评论没有提到 C11,而是 C++11,它是 2011 版本的 C++。众所周知,C 和 C++ 是非常不同的语言。
标签: arrays c initialization declaration