gpt4 book ai didi

c++ - C/C++ : To access a position of a pointer of a given type is different to acess the same position of a pointer of another type?

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:38 24 4
gpt4 key购买 nike

让我们进行以下两个指针访问:

char poBuffChar[100];

Case 1:

(void *)&poBuffChar[10];

Case 2:

(void*)(&poBuffChar)[10];

如果我理解正确,第一种情况我选择了我的 char 缓冲区的一个成员,选择了一个指向该成员的指针并将该指针(它是一个 char*)转换为一个指向 void 的指针。在第二种情况下,嗯,实际上我不确定它做了什么 xD 但重要的是第一种情况给了我一个“警告:取消对 void* 的引用”(或类似的东西),而第二种情况没有给我任何警告。

问题是:从案例 1 更改为案例 2,我处理的结果是否相同?也就是说,第二个代码是否访问与第一个代码相同的数据?


编辑

好吧,似乎有区别:在第二种情况下运行代码只是给出了一个段错误。但是仍然需要一些澄清(以及一些关于如何消除警告的建议,因为我知道第一个可用的解决方案不起作用)

最佳答案

&poBuffChar[10] 具有指向 char 的指针 类型并指向数组 poBuffChar 的第 11 个元素。

(&poBuffChar)[10] 是一个数组的第 11 个元素(大小为 100 的字符数组),据称其第一个元素是 poBuffChar(整个数组)。此元素的类型是 array of char of size 100,很像 poBuffChar 本身。它指向数组开头之外的 10 * 100 = 1000 字节。

Coliru Demo

关于c++ - C/C++ : To access a position of a pointer of a given type is different to acess the same position of a pointer of another type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25871258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com