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

时间:2017-10-23 15:51:57

标签: c pointers

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

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

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

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

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

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

谁能看到我哪里出错了?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

如果{% if messages %} <ul class="messages"> {% for message in messages %} <li{% if message.tags %} class="{{ message.tags }}"{% endif %}> {{ message }} </li> {% endfor %} </ul> {% endif %} 是指针,则指向xBase(即xBase)的指针基本上等同于指向一个指针元素的数组的第一个元素的指针。在您的情况下,&xBase基本上等同于&xBase类型。

即。它看起来像这样

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

现在,如果你记得任何指针或数组signed char *[1]和索引p,表达式i正好等于*(p + i)。如果我们在p[i]&xBase中替换,那么您拥有的SampleCount等于*((&xBase) + SampleCount),这是(&xBase)[SampleCount] >一个元素。它将超出范围。

您添加的上述“图片”将类似于

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