Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指针帮助:取消对访问结构中数据的结构的指针的引用_C++_C_Pointers_Struct - Fatal编程技术网

C++ 指针帮助:取消对访问结构中数据的结构的指针的引用

C++ 指针帮助:取消对访问结构中数据的结构的指针的引用,c++,c,pointers,struct,C++,C,Pointers,Struct,我在思考某行代码是如何工作时遇到了一些问题。出于某种原因,它只是没有点击。这行代码通常用于unix域套接字中的抽象文件句柄 背景: typedef struct myStruct { char charArray[10]; } myStruct; myStruct myStructure; myStruct *ptrToStruct = &myStructure; /* This should change myStructure.charAarray[0] to equa

我在思考某行代码是如何工作时遇到了一些问题。出于某种原因,它只是没有点击。这行代码通常用于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所解释的,指针没有
操作符

ptrToStruct
不是结构,所以

ptrToStruct.charArray
应该是

(*ptrToStruct).charArray

然后,是的,您可以使用

*( ptrToStruct->charArray ) = 'a';

这和

char charArray[10];
*charArray = 'a';


myStruct ptrToStruct
应该是
myStruct*ptrToStruct
*(ptrToStruct.charArray)
应该是
*ptrToStruct->charArray
或者
ptrToStruct->charArray[0]
对不起,你是对的。它是myStruct*ptrToStruct
myStruct ptrToStruct=&myStructure
是错误的,因为变量是一个结构,而不是指向结构的指针,但您试图用指向结构而不是结构的指针对其进行初始化。如果它是
myStruct*ptrToStruct
,则
*(ptrToStruct.charArray)
无效。
( ptrToStruct->charArray )[0] = 'a';
char charArray[10];
*charArray = 'a';
char charArray[10];
charArray[0] = 'a';