我有一个存储5char *
个指针的 struct
struct x {
char *arr[5];
};
我使用malloc()为 struct 分配内存
struct x *str = malloc(sizeof(struct x));
然而,当我试图用一个值(即只读字符串文字)初始化arr
时,它会给我一个错误
error: expected identifier before ‘(’ token
13 | (*str).(*(arr+0)) = "hello";
^
这是我的初始化
(*str).(*(arr+0)) = "hello";
我知道我可以这样做
str->arr[0] = "hello"
但我想了解字符串数组是如何工作的,所以我使用了指针,首先将str->
解引用并将其更改为(*str)
.
此外,由于arr[0]
在初始化str->arr[0] = "hello"
中工作,并且我知道arr[0]
相当于*(arr+i)
,其中i
是一个数组单元,我认为这在 (*str).(*(arr+0)) = "hello";
中可以工作,但实际上不行.
为什么会这样?字符串数组在幕后是如何工作的?