C++ 结构数组的赋值
我有一个结构数组。我想做的是给这些结构的成员赋值。下面的代码有什么问题C++ 结构数组的赋值,c++,c,unix,C++,C,Unix,我有一个结构数组。我想做的是给这些结构的成员赋值。下面的代码有什么问题 #include <stdio.h> typedef struct{ int a1; int a2; }sample; main(){ sample ar[4]={ (1,2), (3,4), (5,6), (7,8) }; int i; for(i=0;i<4;i++){ printf("ar[%d]----%d %d",i,ar[i].a1,a
#include <stdio.h>
typedef struct{
int a1;
int a2;
}sample;
main(){
sample ar[4]={
(1,2),
(3,4),
(5,6),
(7,8)
};
int i;
for(i=0;i<4;i++){
printf("ar[%d]----%d %d",i,ar[i].a1,ar[i].a2);
}
}
而不是(或者可能是程序做得对,我正遭受着愚蠢的误解)
你写了:
sample ar[4];
ar[4] = {
(1,2),
(3,4),
(5,6),
(7,8)
};
数组初始值设定项的语法(仅在ar
初始化期间有效)为:
C11(n1570),§6.7.9初始化
此外,编写可读代码也很重要。您应该这样初始化向量:
sample ar[4] = {
{1,2},
{3,4},
{5,6},
{7,8}
};
此外,还应指定main()
的返回类型:
您应该使用声明进行赋值,并始终使用“{”
不正确,可能是隐式声明。@xavier:什么意思?我应该说-implicit type。如果没有显式返回类型,函数默认为int。至少在某些C标准中。隐式声明意味着编译器不知道函数,但相信它存在,并且您知道如何使用它。
-Werr“或”代码>会隐式声明错误而不是警告。@沙维尔:虽然不是C++。但是,问题是被标记为C和AS C++。我将编辑答案以澄清这是“分配”的Word。但是PrtTF语句的输出是错误的。我将编辑我的。post@kernelmaniac当前位置我已经在我的电脑上测试过了,它似乎工作正常。你期望什么,你得到什么?我期望的是在我的编辑中指定的。请查看。可能是我有一个愚蠢的错误观念。在答案中提供更正后,你将得到正确的结果。显示新问题的完整代码。是的,在printf中为新行添加\n确定。第二个括号(例如{…})应该在作业中的任何地方使用。我使用的是第一个括号(例如(…),然后是Kernef maniac good:)
sample ar[4];
ar[4] = {
(1,2),
(3,4),
(5,6),
(7,8)
};
sample ar[4] = {
{1,2},
{3,4},
{5,6},
{7,8}
};
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
sample ar[4] = {
{1,2},
{3,4},
{5,6},
{7,8}
};
int main()
// ^^^
// ...
sample ar[4] = {
{1,2},
{3,4},
{5,6},
{7,8}
};