为什么我不能简单地为字符串赋值给整数?

时间:2018-01-29 00:56:50

标签: c

int x;x=1; int x=1;

的作用相同

但是

 char str[20];
 str="my name is bla bla";

不起作用,而 char str[20]="my name is bla bla"; 有效

使用TDM-GCC-64编译器处理代码块

1 个答案:

答案 0 :(得分:4)

在C语言中,字符串只是字符数组。可以说核心语言本身甚至不知道字符串的存在 - 它是一个库级概念。 (除了字符串文字之外,也许是核心语言特性,它们是字符串。)。在所有方面,字符串都只是数组。

在C语言中,裸数组通常不可复制,既不在赋值上下文中也不在初始化上下文中。相反,除了一些特殊的上下文之外,C中的数组会立即衰减为指针:

  1. 一元&运营商
  2. sizeof运营商
  3. _Alignof运营商
  4. 使用字符串文字初始化char[]数组(在这种情况下实际进行数组复制)
  5. 初始化的示例属于上面的列表,这就是它的工作原理。但是使用赋值的示例不是例外。在后一种情况下,应用了数组的一般规则:您无法在C中分配数组。在要复制裸数组时,必须使用用户级或库级代码。