c++ - 指针帮助:取消引用指向访问其中数据的结构的指针
问题描述
我在理解某行代码的工作方式时遇到了一些麻烦。由于某种原因,它只是没有点击。这行代码通常与 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
然后,是的,您可以使用
*( ptrToStruct->charArray ) = 'a';
或者
( ptrToStruct->charArray )[0] = 'a';
这和没有区别
char charArray[10];
*charArray = 'a';
和
char charArray[10];
charArray[0] = 'a';
推荐阅读
- c# - SearchResultEntry 中缺少属性
- python - pd.todatetime() ValueError:未转换的数据仍然存在:9
- c# - C# 和 SQL Server - 错误 40,无法打开与 SQL Server 的连接
- python-3.x - 如何在 Pandas DataFrame 中融合两个索引以在 Python 中仅创建一个
- r - R - 可反应 - groupBy - 在顶部显示总计
- r - 如何让节点链接到 URL(visNetwork,R)
- awk - awk:如果条件不满足,则设置一个变量
- php - 为什么 Firefox 浏览器会抛出 PHP 代码错误?
- containers - 在 cython 中使用 C++ 容器
- ios - 通过 Fastlane 辞职后出现错误 ITMS-90046