指针帮助:取消引用指向访问其中数据的结构的指针

时间:2018-04-27 00:09:12

标签: c++ c pointers struct

我无法解决某段代码如何工作的问题。出于某种原因,它只是没有点击。这行代码通常用于在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'吗?但解除引用的运算符正在考虑中吗?我很抱歉一点都不清楚。

更新:问题已得到解答。我误读了代码,代码实际上是*(myStructure.charArray),这就是它改变数组的第一个索引的方式。我也应该想出来,因为Sid解释指针没有.运算符。

1 个答案:

答案 0 :(得分:3)

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';