c - 结构体中元素之一的数组初始化

标签 c pointers structure

我已经为结构中的一个元素初始化了数组,打印输出时出现一些错误,请指出错误并指导解决它。谢谢!

#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/

相关文章:

c++ - 在递归函数上使用 unordered_map unordered_set 的段错误

c - 如何将字符串从数组传递到指针,同时也使用结构(在 c 中)

用于存储 1000 个标签/本地化标准化的 JavaScript 结构(或数组或列表)

使用随机数 rand() 计数

c - fprintf 和 ctime 没有从 ctime 传递\n

c - C 中 scanf( ) 中的格式说明符?

c - 返回 C 中的字符指针数组

c++ - 指向变量的指针与指向一个元素数组或零元素数组的指针相同吗?

c - 编写并使用一个将掩码作为参数并返回结构的函数

c - 使用 Structure 打印五个成员高度中的第 n 个成员