繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM