浅谈sizeof() 函数在Arduino中的使用
下面浅谈 sizeof() 函数在Arduino中的使用
注意:这里用sizeof(str[2]),sizeof(str[0]),sizeof(str[1])都是一样的
String str[6]={"abc","defg","hijk","lm","n"};
int num;
void setup() {
Serial.begin(115200);
num=sizeof(str) /sizeof(str[2]);
Serial.print("该数组 str[]的长度:");
Serial.print(num);
}
void loop()
{
}
以下是对这段代码的分析:
一、整体功能
这段代码的主要功能是在 Arduino 环境下(从函数名 setup
和 loop
)计算并打印出一个字符串数组的长度。
二、具体解析
-
定义部分:
String str[6]={"abc","defg","hijk","lm","n"};
:定义了一个名为str
的字符串数组,包含 5 个肉眼可见字符串元素,和一个不可见的,因为:str[6]
。int num;
:定义了一个整数变量num
,用于存储数组的长度。
-
setup
函数:Serial.begin(115200);
:初始化串口通信,设置波特率为 115200。num=sizeof(str) /sizeof(str[2]);
:计算数组的长度。sizeof(str)
返回整个数组占用的字节数,sizeof(str[2])
返回数组中单个元素占用的字节数,两者相除得到数组的长度。Serial.print("该数组 str[]的长度:");
和Serial.print(num);
:打印出提示信息和数组的长度。
-
loop
函数:- 这个函数为空,意味着在程序运行过程中没有循环执行的任务。
总的来说,这段代码简洁地实现了计算并输出字符串数组长度的功能。如果在实际应用中需要对数组中的元素进行进一步处理,可以在 loop
函数中添加相应的代码。
特别注意:
如果 str[6]改为str[],他就会以实际写出来的为准,进行输出。
代码中num=sizeof(str) / sizeof(str[2]);是用来计算数组str长度的一种方式。
首先,sizeof(str)是计算整个数组占用的字节数。这个数组是由字符串组成的数组,在内存中,字符串本身的存储方式以及数组的存储方式会影响这个值。
虽然单个字符串如 “abc” 和 “n” 占用的字节数不同,
但对于这个特定的数组来说,数组的总字节数取决于数组中元素的个数以及每个元素的存储方式(在这种情况下,每个元素是一个字符串)。
sizeof(str[2])是计算数组中单个元素占用的字节数。
假设每个字符串在内存中的存储方式占用了一定的固定大小加上字符串内容的字节数,那么对于这个特定的数组,无论每个字符串的具体内容如何,只要它们都是相同类型的字符串(比如都是以相同的方式存储的字符串),那么sizeof(str[2])的值就是固定的,
通过sizeof(str) / sizeof(str[2])就能准确地计算出数组的长度。