gpt4 book ai didi

c - C 中指针的错误管理

转载 作者:太空宇宙 更新时间:2023-11-04 01:59:25 24 4
gpt4 key购买 nike

我有一个小问题,我想了解有关指针...编译时出现此错误:

error: lvalue required as left operand of assignment

我的代码是这个:

typedef struct _matrix_info
{
unsigned int matrix[2][5][4];
}matrix_info_t;

static matrix_info_t matrix_custom_policy = {....}
matrix_info_t* matrix_custom_get(void)
{
return &matrix_custom_policy;
}


static matrix_info_t matrix_policy[3] =
{
// Only the first 2 cases are initialized
........
}

main()
{
.....

// the third case is initialized here;
&(matrix_policy[3]) = matrix_custom_get();
}

你知道我为什么会出现这个错误吗?我应该做一个 memcpy 而不是吗?提前致谢。

最佳答案

这个表达式

 &(matrix_policy[3]) 

创建一个相当于表达式的临时对象

matrix_policy + 3

这又不是左值,可能不会被分配。

事实陈述

&(matrix_policy[3]) = matrix_custom_get();

可以改写成

(matrix_policy +3 ) = matrix_custom_get();

当然是一个无效的声明。

考虑到您在此语句中使用了错误的索引,因为索引的有效范围根据数组的定义

static matrix_info_t matrix_policy[3] =
{
//...
};

[0, 2]

你的意思是像下面这样的吗?

matrix_policy[2] = *matrix_custom_get();

关于c - C 中指针的错误管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29252119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com