指针帮助:取消指向访问其内部数据的结构的指针

Pointer help: dereferencing a pointer to a struct accessing data within it

本文关键字:指针 结构 内部 数据 帮助 取消 访问      更新时间:2023-10-16

我围绕某个代码的工作方式缠绕着一些麻烦。由于某种原因,它只是没有点击。这线代码通常与Unix域插座中的抽象文件句柄一起使用。

上下文:

typedef struct myStruct {
    char charArray[10];
} myStruct; 
myStruct myStructure;
myStruct *ptrToStruct = &myStructure;
/* This should change myStructure.charAarray[0] to equal a */
*(ptrToStruct.charArray) = 'a'; 

我知道数组本质上是指向数组中的第一个索引的指针,但指针没有数据(charArray(。

我很难理解的原因是因为ptrToStruct试图访问指针的数据成员charArray,但是指针没有数据成员charArray,然后将其取消给它。

这种像(*ptrToStruct).(*charArray) = 'a'一样吗?但是,撤离操作员被纳入了吗?我为不清楚的情况感到歉意。


update :问题已得到回答。我正在误读代码,该代码实际上是*(myStructure.charArray),这就是它正在更改数组的第一个索引的方式。我还应该弄清楚这一点,因为正如SID解释的那样,指针没有.操作员。

ptrToStruct不是结构,所以

ptrToStruct.charArray

应该是

(*ptrToStruct).charArray

ptrToStruct->charArray

然后,是的,您可以使用

设置字符
*( ptrToStruct->charArray ) = 'a';

( ptrToStruct->charArray )[0] = 'a';

这与

没有什么不同
char charArray[10];
*charArray = 'a';

char charArray[10];
charArray[0] = 'a';