搜索

c语言中 结构体中有二维数组怎样赋初值

发布网友 发布时间:2022-04-20 06:26

我来回答

5个回答

热心网友 时间:2023-09-07 09:49

最基本的方法就是:
mx[0].name[0] = x;
mx[0].information[0][0] = x;
以此类推 ……
数组不能整体直接赋值,以下情况除外:
1. 初始化时赋值:
typedef struct star
{
char name[8];
char information[2][2];
}MX;

MX mx[2] = {{"zhang",
{{'a','a'},
{'b','b'}}},//为了你能看清楚mx[0]分了三行,此处之前是mx[0],下面是mx[1]
{"lisi", {{'c','c'},{'d','d'}}}};

2. 把数组放在结构里,两个结构可以直接赋值。
3. memcpy等方法。
需要注意几点,
你的name是个字节,所以如果name的大括号里用“zhangsan”,会踩内存,初学者常犯的错误,因为这种赋值隐含了"\0",字符串的截止符,换句话说你赋值zhangsan是8个BYTE+“\0”,这样就超过name[8]了。
你可以尝试指针×pName;

热心网友 时间:2023-09-07 09:49

最基本的方法就是:

mx[0].name[0] = x;

mx[0].information[0][0] = x;

以此类推 ……

数组不能整体直接赋值,以下情况除外:

1. 初始化时赋值:

typedef struct star

{

   char name[8];

   char information[2][2];

}MX;


MX mx[2] = {{"zhang", 

                    {{'a','a'},

                    {'b','b'}}},//为了你能看清楚mx[0]分了三行,此处之前是mx[0],下面是mx[1]

                    {"lisi", {{'c','c'},{'d','d'}}}};


2. 把数组放在结构里,两个结构可以直接赋值。

3. memcpy等方法。

需要注意几点, 

你的name是个字节,所以如果name的大括号里用“zhangsan”,会踩内存,初学者常犯的错误,因为这种赋值隐含了"\0",字符串的截止符,换句话说你赋值zhangsan是8个BYTE+“\0”,这样就超过name[8]了。

你可以尝试指针×pName;

希望对你有所帮助。

热心网友 时间:2023-09-07 09:50

struct star

{
char name[8];
char information[2][2];
}mx={
"zhangsan",'a','b','c','d',
}

热心网友 时间:2023-09-07 09:50

struct star
{
char name[8];
char information[2][2];
}
mx={ "abcdefg",{{'a','b'},{'c','d'}}};追问如果是mx[2]呢?

追答mx [2],应该是单纯的指数组的一列。

热心网友 时间:2023-09-07 09:51

{
{"aa", {{'a','a'},{'b','d'}},
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top