[Error] assignment to expression with array type

2023-05-16

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

int *array2;

int array3[3];

array2 = array1;//copy pointer only

array3 = &array1;//error

To elaborate, from C11, chapter §6.5.16

assignment operator shall have a modifiable lvalue as its left operand.

and, regarding the modifiable lvalue, from chapter §6.3.2.1

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

You need to use strcpy() to copy into the array. 

That said, int array1[] = {1,2,3}; works fine, because this is not a direct assignment involving assignment operator. There we're using a brace-enclosed initializer list to provide the initial values of the object. That follows the law of initialization, as mentioned in chapter §6.7.9

Each brace-enclosed initializer list has an associated current object. When no designations are present, subobjects of the current object are initialized in order according to the type of the current object: array elements in increasing subscript order, structure members in declaration order, and the first named member of a union.[....]

Byte the way:

printf("address(array1):0x%x\n",&array1);
printf("address(array1+1):0x%x\n",&array1+1);
printf("(array1==&array[0]):0x%x\n",array1);
printf("(&array1[0]+1):0x%x\n",array1+1);
/*
address(array1):0x62fde0
address(array1+1):0x62fdec
(array1==&array[0]):0x62fde0
(&array1[0]+1):0x62fde4
*/

array1 and &array1 have same address: 0x62fde0.BUT array1 represents &array1[0]. &array1 represents the whole array.

Referenc: https://stackoverflow.com/questions/37225244/error-assignment-to-expression-with-array-type-error-when-i-assign-a-struct-f/37225315#37225315?newreg=2e0f0ad5ee8a4906997213832707b1e6

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Error] assignment to expression with array type 的相关文章

  • 什么是右值、左值、x值、左值和右值?

    在 C 03 中 表达式可以是rvalue or an lvalue 在 C 11 中 表达式可以是 rvalue lvalue xvalue glvalue prvalue 两类变成了五类 这些新的表达类别是什么 这些新类别与现有的右值和
  • 什么是 JSP 上下文?

    我想知道这个 java 对象到底是什么以及它的主要用途是什么 我看过java文档 但这让我更困惑 它是否有会话 请求 应用程序等关系范围 JspContext JspContext 令人困惑 因为它似乎没有做任何 ServletContex
  • 如何使用正则表达式格式化数字[重复]

    这个问题在这里已经有答案了 我遇到了涉及格式化数字的问题 在巴西 我们有一种称为 CPF 的文件 这是每个公民都拥有的一种个人身份证 以下是格式正确的 CPF 号码示例 096 156 487 09 我正在尝试使用正则表达式来格式化包含 C
  • 使用表达式创建带有嵌套类的谓词

    我有这个 public class Company public int Id get set public string Name get set public class City public int Id get set publi
  • PostgreSQL 中表达式索引的实际限制

    我需要使用 HSTORE 类型和键索引来存储数据 CREATE INDEX ix product size ON product data gt Size INT CREATE INDEX ix product color ON produ
  • 我该如何清理这个 lambda?

    我有一个在多个 LINQ 查询中多次使用的表达式 因此我将其分离到它自己的返回该表达式的方法中 该函数的 lambda 部分看起来有点混乱 有人想尝试重构它并使其更具可读性和 或更小吗 private Expression
  • 如何以编程方式解析 spring 安全表达式(例如在某些控制器中)

    你如何解析 spring web 安全表达式 例如hasRole admin 以编程方式 不使用标签 注释或 参考文档 http docs spring io autorepo docs spring security 3 2 0 RELE
  • PHP Preg表达式从字符串中删除html标签和内部内容?

    快速提问 我想从以下字符串中删除sup 标签及其中的所有内容 string Priority Mail
  • Java 8方法参考使用示例

    我正在查看一个示例 该示例从与方法引用相关的当前目录中提取隐藏文件数组 如下所述 using 匿名内部类执行 File hiddenFiles new File listFiles new FileFilter public boolean
  • 在多层应用程序中,是否应该允许客户端将自己的 linq 表达式发送到服务器?

    理由 HQL 和 NH 标准是 NHibernate 特定的构造 因此它们是服务器端 DAL 实现细节 我不希望它们 泄漏 到客户端 因此 我们的客户端提供LINQ表达式供服务器处理 对我来说似乎合理 但是有些人不这么认为 所以我想知道为什
  • 提取数据 PHP 字符串

    我已经使用 file get contents 基本上将站点的源代码获取到单个字符串变量中 源包含许多行 如下所示 td align center a href somewebsite com something 12345 a td 还有
  • 作为参数的 Linq 表达式

    我想打电话给IQueryable
  • “const”错误之前的预期主表达式

    请帮忙 我收到很多错误 sub2 cpp 在函数 int main 中 sub2 cpp 11 14 错误 从 const char 到 char 的无效转换 fpermissive sub2 cpp 12 14 错误 从 const ch
  • 正则表达式匹配/分组字符串中的重复字符

    我需要一个正则表达式来匹配字符串中的字符组 这是一个示例字符串 qwwwwwwwwweeeeerrtyyyyyqqqqwEErTTT 它应该匹配 比赛组 结果 1 q 2 wwwwwwwww 3 哎呀 4 rr 5 t 6 yyyyy 7
  • WhereNot linq 表达式

    我正在尝试创建一个扩展 WhereNot 所以我可以使用 Dim x Hello world Dim y x Split WhereNot AddressOf String IsNullOrEmpty 请注意 我的目标是学习 linq 表达
  • 如何组合两个表达式: result = exp1(exp2);

    作为主题 在这种情况下如何将两个表达式组合成一个表达式 Expression
  • 表达式树深度限制

    我在尝试对类型为 Expression gt 的 LambdaExpression 调用 Compile 时遇到问题 该表达式的深度约为 400 较小的值不会导致任何问题 我找不到任何有关此类限制的信息 谁能澄清这一点吗 我可以增加这个限制
  • 实现用户定义的算术函数

    如何添加函数 例如汉明权重 并在右侧出现的表达式中使用它是一些 is 2 goal 像 goal expansion 或 term expansion 这样的东西可以帮助这里吗 我承认这不是一个大功能 但它可以提高我的一些 Prolog 程
  • 如何将 OData 查询字符串转换为 .NET 表达式树

    完全重写这个问题 因为我现在比以前理解得更多 我试图将 OData 查询字符串直接抽象为 NET 表达式树 似乎有很多关于此的问题和文章 但没有答案提供依赖于的抽象解决方案soley on the Microsoft Data OData命
  • C 中的复合语句表达式

    下面的代码不起作用 int i void 999 100 添加括号就可以了 为什么 int i void 999 100 还有另一种方法可以完成此类分配 int i void 999 100 是什么让他们与众不同 在这份声明中 int i

随机推荐