gpt4 book ai didi

c - typedef string c 赋值给位置

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

我在 C 中使用 typedef 如下:

typedef char string[20];

然后我创建了一个名为“writeElement”的函数,定义如下:

void writeElement(string * string, int position, char letter){
string[position]=letter;
}

为什么会出现错误:

"assignment to expression with array type"

我就是不明白。

最佳答案

首先,这很糟糕:

string * string

因为你定义了一个和类型同名的变量。因此变量会屏蔽类型的名称,这意味着您不能在该范围内使用该类型。

主要问题是变量string 的类型是string *,转换为char (*)[20],即指向数组的指针。所以 string[position] 的类型是 char [20],这是一个数组类型,你不能给数组赋值。

string 变量的名称更改为其他名称,并将其类型更改为string:

void writeElement(string my_string, int position, char letter){
my_string[position]=letter;
}

由于将数组传递给函数与将指针传递给它的第一个元素是一样的,您可以通过数组元素运算符[] 取消引用指针,以便结果在外部可见的功能。

这是一个例子,说明为什么将指针或数组隐藏在 typedef 后面不是一个好主意。这会导致混淆实际类型是什么。

关于c - typedef string c 赋值给位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47820033/

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