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

struct star

{
char name[8];
char information[2][2];
}mx;
能不能根据上面的举个例子。帮帮小弟,谢谢各位。
是mx[2];

最基本的方法就是:
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;
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-04-05

最基本的方法就是:

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;

希望对你有所帮助。

本回答被提问者采纳
第2个回答  2013-08-03
struct star

{
char name[8];
char information[2][2];
}mx={
"zhangsan",'a','b','c','d',
}
第3个回答  2013-08-03
struct star
{
char name[8];
char information[2][2];
}
mx={ "abcdefg",{{'a','b'},{'c','d'}}};追问

如果是mx[2]呢?

追答

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

第4个回答  2013-08-03
{
{"aa", {{'a','a'},{'b','d'}},
相似回答