问题描述
- c语言,对结构体中的整型数组进行赋值.....
-
c语言中,在结构体里声明整型数组,想对整型数组赋值,只能用循环吗?如果我想这样呢.....
typedef struct Data
{
int arr[10];
}Data;
int main()
{
Data data;
data = (Data)malloc(sizeof(Data));
data->arr[10]={1,3,2,4,5,6,7,8,9,0};.
...
... ...
}这样可以吗?
解决方案
绝对不可以。数组作为结构体成员,结构体已经初始化了,成员也已经初始化了,这是初始化的语法,不是赋值的语法。
解决方案二:
兄弟,建议你使用 Date date = {{1,2,3,4,5,6,7,8,9,10 }};
使用malloc返回的是开辟空间的首地址,得要用的话,建议 Date date ,*dp = &date; *dap = malloc(sizeof(int)*10);
结构体变量访问只能用 点,而且结构体仅能在初始化的时候不整体初始化,后面不能整体初始化,但可以通过结构体之间互相赋值初始化。
解决方案三:
如果不想用循环的话,也可以用memcpy
Data data;
int temp[10] = {1,3,2,4,5,6,7,8,9,0};
memcpy(data.arr, temp, 10*sizeof(int));
解决方案四:
C语言中的结构体数组
----------------------
解决方案五:
这样子是不行的,而且你的写法本身就有问题
解决方案六:
这样的:data->arr[10]={1,3,2,4,5,6,7,8,9,0}; 格式,只有在定义数组时使用。
数组定义后,就不能再这样赋值了,只能一个个下标去赋值;或者对数组按指针操作,完成内存块的赋值。
时间: 2024-12-03 19:39:13