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