【发布时间】:2011-12-11 18:07:32
【问题描述】:
似乎我仍然没有正确获得 C 中的指针。
我希望全局数组(指针)j 的长度是动态的。
我有这个(Arduino)代码
unsigned int* j;
void setup() {
Serial.begin(9600);
initj();
Serial.println(j[0]); //111 -> right
Serial.println(j[0]); //768 -> wrong!
Serial.println(j[1]); //32771 -> wrong!
}
void initj() {
unsigned int i[2];
i[0] = 111;
i[1] = 222;
j = i;
Serial.println(j[0]); // 111 -> right
Serial.println(j[1]); // 222 -> right
}
void loop() {
}
我怎样才能做到这一点?
提前谢谢你!
【问题讨论】:
-
“我希望全局数组(指针) j 的长度是动态的。” (强调添加)数组和指针是 不是同义词,如果你认为他们是你可能从一开始就有麻烦。是的,它们共享很多语法,是的,数组会衰减为指针,但它们是不同的东西。
-
你需要了解堆和栈的区别。尤其是退出函数时堆栈存储会发生什么。
-
我建议先在你的桌面上学习一点 C 代码,一旦你学会了足够的东西,就去你的 Arduino(它实现了 C 或 C++ 的一个小变体)
-
@BasileStarynkevitch 在 Arduino 上编码并不难(尽管我不得不承认我的指针有问题)。还是谢谢你。
标签: c arrays global local arduino