spe*_*ndo 5 c arrays pointers arduino
当我只知道指向数组的指针时,有没有办法获得数组的长度?
请参阅以下示例
int testInt[3];
testInt[0] = 0;
testInt[1] = 1;
testInt[2] = 1;
int* point;
point = testInt;
Serial.println(sizeof(testInt) / sizeof(int)); // returns 3
Serial.println(sizeof(point) / sizeof(int)); // returns 1
Run Code Online (Sandbox Code Playgroud)
(这是来自Arduino Code的一个小贴士 - 对不起,我不"说"真正的C).
Tom*_*rdt 12
简单的答案是否定的,你不能.您可能希望在内存中保留一个变量来存储数组中的项目数量.
并且有一个不太容易的答案.有一种方法可以确定数组的长度,但为此你必须用另一个元素标记数组的结尾,例如-1.然后循环遍历它并找到这个元素.该元素的位置是长度.但是,这不适用于您当前的代码.
选择以上之一.
小智 5
还在这里做一个 Arduino 项目...互联网上的每个人似乎都坚持认为这是不可能的...然而书中最古老的技巧似乎对空终止数组工作得很好...
字符指针的示例:
int getSize(char* ch){
int tmp=0;
while (*ch) {
*ch++;
tmp++;
}return tmp;}
Run Code Online (Sandbox Code Playgroud)
魔法...