[英]Pointer help: dereferencing a pointer to a struct accessing data within it
我在围绕某些代码行的工作方式上遇到麻烦。 由于某种原因,它只是没有单击。 这行代码通常与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)
代码,代码实际上是*(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';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.