做网站设计都需要什么,广州网络公司策划,购买域名后用wordpress建站,微信小程序怎么开通首先现象是我在用LORA发送信息的时候#xff0c;左边显示长度是8而右边接收到的数据长度却是4
我以为是OLED显示屏坏了#xff0c;又或者是我想搞创新用了const char* 类型强制转换数据的原因#xff0c;结果发现都不是
void Function_SendMsg( unsigned char* data){unsi…首先现象是我在用LORA发送信息的时候左边显示长度是8而右边接收到的数据长度却是4
我以为是OLED显示屏坏了又或者是我想搞创新用了const char* 类型强制转换数据的原因结果发现都不是
void Function_SendMsg( unsigned char* data){unsigned char len sizeof(data);sprintf((char* )ARRAY2, %d, len);OLED_ShowString(2, ARRAY2);LORA_Tx((unsigned char* )data, len);len sizeof(data);sprintf(ARRAY2, %d, len);//OLED_ShowString(2, ARRAY2);OLED_ShowString(0, ARRAY2);
}最终发现原因出在这个函数这个函数的len输出一直是4而下面的输出是20
#includestdio.h
unsigned char ARRAY1[20];void Function_GetLen(unsigned char* data){unsigned char len sizeof(data);printf(函数中的字符串长度%d, len);
}int main(){printf(%d\n, sizeof(ARRAY1)); Function_GetLen(ARRAY1);
} 将问题简化成上述代码data指针指向ARRAY1数组ARRAY1数组的sizeof肯定是20那么sizeof(data)的输出也应该是20
但输出结果如下 我非常不理解查过sizeof资料后发现 当使用 sizeof 运算符作用于数组时得到的是整个数组的大小而不是数组首元素的指针的大小同样当您使用 sizeof运算符作用于指针时您得到的是指针本身的大小而不是指针所指向的数据的大小。 也就是说虽然data是指向ARRAY1的但是data本身是个指针size of 后返还的是指针大小而ARRAY1是数组应该在编码的时候就区分了ARRAY1和data的区别本质上虽然ARRAY1和data都是指针类但细分的话他俩又有明显区别size of正是通过这个区别做不同处理返回不同结果。 通过这个小小细节也就不难醒悟到不要因为一点小小的成就就沾沾自喜我所掌握的可能仅仅只是冰山一角骄兵必败踏踏实实一步一个脚印的去做即使失败也是帅气的还有就是比赛的时候最好不要搞创新以免产生不必要麻烦当然平常练习多科研还是很好的像现在这样把坑都踩了比赛的时候容错率就跟高了