gpt4 book ai didi

c - 使用计数变量偏移指向指针的指针

转载 作者:行者123 更新时间:2023-11-30 16:39:52 25 4
gpt4 key购买 nike

目前我正在使用许多结构、指针和 malloc 函数。就目前情况而言,我有一个结构,除了其他变量之外,它还保存一个指向使用 malloc 函数分配的某些内存空间的指针。

我使用这个空间来存储样本,因此我使用一个简单的计数变量来跟踪有多少样本。现在,我的困难来自与 I2C 函数的接口(interface),该函数使用三重指针(signed char***)来存储数据。

为了处理这个问题,我使用双指针(signed char**)来指向结构中指针提供的内存空间,然后使用 count 变量来移动该指针。

我发现偏移量的添加只是从保存初始指针的内存开始递增。

我尝试实现此目的的代码行如下。

signed char** VAL_PTR = ((signed char**)(&mem.Accel.xBase)) + ((signed char) mem.Accel.SampleCount);

有人能看出我哪里出了问题吗?任何帮助将不胜感激!

最佳答案

如果xBase是一个指针,则指向xBase(即&xBase)的指针基本上相当于指向一个数组的第一个元素的指针。由指针的一个元素组成的数组。在您的情况下 &xBase 基本上等同于 signed char *[1] 类型。

即它看起来像这样

+-------+| xBase |+-------+^|&xBase

现在,如果您还记得,对于任何指针或数组 p 和索引 i,表达式 *(p + i) 完全相等到p[i]。如果我们替换 &xBaseSampleCount 那么你得到的是 *((&xBase) + SampleCount) ,它等于 (&xBase )[SampleCount],这是一个元素数组的元素编号SampleCount + 1。将会超出范围。

上面的“图像”与您添加的内容类似

+-------+| xBase |               ???+-------+^                        ^|                        |&xBase                   &xBase + SampleCount

关于c - 使用计数变量偏移指向指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46893515/

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