所以目前我正在使用许多结构,指针和malloc函数。就目前而言,我有一个结构,除了其他变量之外,它还包含一个指向使用malloc函数分配的内存空间的指针。
我正在使用这个空间存储样本,因此我使用一个简单的计数变量来跟踪有多少样本。现在我的困难来自于我的I2C功能,它使用三重指针(signed char ***)来存储数据。
为了解决这个问题,我使用双指针(signed char **)指向结构中指针提供的内存空间,然后使用count变量来移动这个指针。
我发现偏移的添加只是从保存初始指针的内存中增加。
我试图实现此目的的代码行如下。
signed char** VAL_PTR = ((signed char**)(&mem.Accel.xBase)) + ((signed char) mem.Accel.SampleCount);
谁能看到我哪里出错了?任何帮助将不胜感激!
答案 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