我已经为结构中的一个元素初始化了数组,打印输出时出现一些错误,请指出错误并指导解决它。谢谢!
#include<stdio.h>
typedef struct person
{
int row[3];
int age;
}PERSON;
int main()
{
int i;
PERSON p;
PERSON *pptr=&p;
pptr->row[3] = {4,5,6};
for (i = 0; i < 3; i++) {
printf (" %d\n", pptr->row[i]);
}
return 0;
}
最佳答案
C 语言中的数组对象是不可赋值的。您无法使用赋值来设置整个数组中的值。因此,使用赋值语法来完成您想要做的事情是不可能的。
您有机会在声明时初始化数组,即定义对象时 p
PERSON p = { { 4, 5, 6 } };
但你没有利用这个机会。之后再使用纯粹的核心语言功能就为时已晚了。
要在声明点之后设置整个数组中的值,您可以使用库函数(例如 memcpy
)与复合文字结合使用
memcpy(pptr->row, (int []) {4, 5, 6}, sizeof pptr->row);
关于c - 结构体中元素之一的数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14028706/