c - 通过赋值运算符复制数组和直接向已定义的数组赋值之间是否存在链接?

标签 c arrays

在C语言中,不能通过赋值运算符直接将一个数组复制到另一个数组。

int arr1[]={1,3,2};
int arr2[]={0};

arr2=arr1;//not possible

另外,如果我没记错的话,我们不能给已经定义的数组赋值......

int a[3];
a[]={1,3,2}; //this is not possible

在上面的代码中,a[]{1,3,2}充当两个不同的数组,它们之间使用了赋值运算符。那么,这是否与第一个提到的情况相同?

请澄清一下。 谢谢。

最佳答案

is this following the same case mentioned at the first?

不,它们是不同的。

在第一种情况下,您尝试做的是数组赋值,这在 C 中是不可能直接实现的。语言语法规定 array name to be a non-modifiable lvalue ,所以

arr1 = arr2;

无效。 C11标准草案(§6.3.2.1)的相关摘录:

A modifiable lvalue is an lvalue that does not have array type, ...

第二种情况

int a[3];
a[]={1,3,2};

您试图将初始化列表 {1, 2, 3} 分配给无效的子表达式 a[],因此是非法的。分配给它什么并不重要; a[] = 1 也是无效的。

关于c - 通过赋值运算符复制数组和直接向已定义的数组赋值之间是否存在链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35600289/

相关文章:

c - 如何分配要存储到数组中的用户输入

java - 使用无参数构造函数添加到数组

java - 在一个类中初始化一个数组并使其可供另一个类访问

带 ADT 的 C 堆栈 - 抽象数据类型

c - 如何在xcode项目中设置包含路径

c - 指针运算

java - 可以将 Java 数组传递给采用数组的 C/C++ 函数吗?

java - 如何将 List<String> 作为 Intent extra 传递?

javascript - 在 JavaScript 中将数组对象转换为数组数组

java - 为什么通过二维数组打印时显示整个对象属性