簡體   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