【发布时间】:2018-11-15 09:29:48
【问题描述】:
我正在尝试对结构中的变量指针数组进行编码。我的问题是结构内的变量具有不同的数据类型。
#include "stdlib.h"
typedef struct val {
unsigned char a;
unsigned char b;
unsigned short c;
unsigned int d;
} _letters;
void setup() {
Serial.begin(9600);
}
int var1 = 0;
void loop() {
_letters lt;
lt.a = 1;
lt.b = 2;
lt.c = 3;
lt.d = 4;
unsigned char *ptrLetters[4];
ptrLetters[0] = <.a;
ptrLetters[1] = <.b;
ptrLetters[2] = <.c; //here is the problem
ptrLetters[3] = <.d; //also here
var1 = (int)*ptrLetters[0];
Serial.println(var1);
}
这样做的目的是因为我想保存地址并通过数组的索引(*ptrLetters[index])从结构中访问变量(我不能修改),但问题是里面该结构有不同的数据类型,并且指针仅针对 char 类型进行初始化。 如何动态更改它?
【问题讨论】:
-
旁注:
ptrLetters对于 4 个元素来说太小了。 -
注意:在 C 中,当大小为
n时,数组索引来自0..n-1。所以对于大小3,索引是0..2所以你需要一个4 的数组作为索引0..3。 -
您确定不能使用指向该类型结构的单个指针,然后将其取消引用到您要检索或写入的任何元素吗?我不明白为什么需要一个 array 指针...
标签: c++ c arrays pointers struct