【发布时间】:2017-11-27 06:40:10
【问题描述】:
我正在使用 C 语言处理一个 arduino 项目,我遇到以下情况:
我有 3 个不同大小的 char 数组,我想将每个数组的地址存储在第四个数组中。
我需要这些作为每个 char 数组的 地址,因为我想在后面的代码中修改 data_a、data_b 和 data_c,并且让 all_data 数组仍然指向修改后的数组。
unsigned char data_a[8] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
unsigned char data_b[3] = {0x08, 0x09, 0x0a};
unsigned char data_c[7] = {0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11};
int all_data_array_length = 3;
unsigned char* all_data[all_data_array_length] = {&data_a, &data_b, &data_c};
...
/*modify the data_a, data_b, data_c arrays */
...
for(int i = 0; i<all_data_array_length; i++) {
/* do something with what all_data[i] points to /*
}
这导致:
cannot convert 'unsigned char (*)[8]' to 'unsigned char*'
我认为我感到困惑的地方是 char* 和 char[] 之间的区别,以及如何创建指向 char 数组的指针。
感谢所有帮助!
【问题讨论】:
-
尝试删除 & 符号。
标签: c arrays pointers reference char