数组名称不能是l值意味着这个?

mat*_*com 2 c

例如,

我声明这样的变量,

char szBuffer[12] = {"Hello"};
char szData[12] = {"Cheese"};

szBuffer = szData;
Run Code Online (Sandbox Code Playgroud)

是错误,因为szBuffer不能是l值.

szBuffer有它自己的地址,例如,0x0012345678szBuffer的值也是它的地址,0x0012345678.

所以我认为"数组名称不能是l值"意味着数组的地址及其值必须相等.

我对吗?

如果我是对的,为什么他们必须平等?

Moh*_*ain 5

数组名称不能是l值

这意味着数组不能用作赋值运算符的l值或左侧(不要与初始化混淆).l值必须是可修改的.您可以修改数组的内容,但不能修改数组本身.

C您无法分配给数组.虽然你可以初学他们.

你应该使用strcpy(szBuffer, szData)memcpy(szBuffer, szData, 12).

此外,不需要{}在字符串文字的初始化中.

如果您坚持使用operator =,则需要将字符串放在结构中,因为允许使用struct object copy C.

例如:

struct string {
  char name[12];
};

struct string szBuffer = {"Hello"};
struct string szData = {"Cheese"};

szBuffer = szData;
Run Code Online (Sandbox Code Playgroud)