【发布时间】:2018-04-04 05:55:34
【问题描述】:
所以目前我正在使用许多结构、指针和 malloc 函数。就目前而言,我有一个结构,在其他变量中,它包含一个指向使用 malloc 函数分配的一些内存空间的指针。
我使用这个空间来存储样本,因此我使用一个简单的计数变量来跟踪有多少样本。现在我的困难来自与我的 I2C 函数的接口,该函数使用三重指针 (signed char***) 来存储数据。
为了处理这个问题,我使用双指针(有符号字符**)指向结构中的指针提供的内存空间,然后我使用 count 变量来移动这个指针。
我发现添加的偏移量只是从保存初始指针的内存中递增。
我尝试实现这一点的代码行如下。
signed char** VAL_PTR = ((signed char**)(&mem.Accel.xBase)) + ((signed char) mem.Accel.SampleCount);
谁能看出我哪里出错了?任何帮助将不胜感激!
【问题讨论】:
-
"使用三重指针 (signed char***)" Three Star Programmer。实际上,您提供的单行代码看起来过于复杂。也许让自己熟悉严格的别名规则,无论如何,重新开始首先设计你的数据结构和程序流程,并以简单设计为目标。
-
我们需要看到一个完整的(但最小的)示例,它显示了所有变量的类型,并解释了预期的结果是什么以及你得到了什么。用代码展示比用文字展示更好。