当前位置:   article > 正文

【雕爷学编程】Arduino 手册之指针运算符[](下标运算符)_arduino []中括号是干什么的

arduino []中括号是干什么的

在这里插入图片描述
在这里插入图片描述
什么是Arduino?
Arduino 是一款开源的电子原型平台,它可以让你用简单的硬件和软件来创建各种创意的项目。无论你是初学者还是专家,Arduino 都能为你提供无限的可能性。你可以用 Arduino 来控制传感器、灯光、马达、机器人、物联网设备等等,只要你能想到的,Arduino 都能帮你实现。

如果你想了解更多关于 Arduino 的信息,你可以访问 Arduino 的官方网站,那里有丰富的资源和教程供你参考。你也可以加入 Arduino 的社区,和来自世界各地的爱好者、学生、设计师和工程师交流心得和经验。此外,你还可以使用 Arduino 的在线编程工具,在云端编写代码并上传到你的开发板上。

Arduino 是一个不断发展和创新的平台,它有着广泛的应用领域和潜力。这里希望本手册能激发你对 Arduino 的兴趣和热情,让你享受 Arduino 带来的创造力和乐趣

在这里插入图片描述

维基百科的定义
Arduino 是一个开源嵌入式硬件平台,用来供用户制作可交互式的嵌入式项目。此外 Arduino 作为一个开源硬件和开源软件的公司,同时兼有项目和用户社群。该公司负责设计和制造Arduino电路板及相关附件。这些产品按照GNU宽通用公共许可证(LGPL)或GNU通用公共许可证(GPL)许可的开源硬件和软件分发的,Arduino 允许任何人制造 Arduino 板和软件分发。 Arduino 板可以以预装的形式商业销售,也可以作为 DIY 套件购买。

Arduino 2005 年时面世,作为意大利伊夫雷亚地区伊夫雷亚互动设计研究所的学生设计,目的是为新手和专业人员提供一种低成本且简单的方法,以建立使用传感器与环境相互作用的装置。初学者和爱好者可用Arduino制造传感器、简单机器人、恒温器和运动检测器等装置。

Arduino 这个名字来自意大利伊夫雷亚的一家酒吧,该项目的一些创始人过去常常会去这家酒吧。 酒吧以伊夫雷亚的 Arduin(Arduin of Ivrea)命名,他是伊夫雷亚边疆伯爵,也是 1002 年至 1014 年期间的意大利国王。

在这里插入图片描述

Arduino 系列电路板的设计大多使用 Atmel AVR 单片机。这些电路板配有一组数字和模拟I/O引脚,可以连接各种扩展板或面包板(Shields 扩展版)和其他电路。这些电路板具有串行端口,包括某些型号上的通用串行总线(USB),也用于从个人电脑加载程序。

软件编程方面,通常使用C/C++程序语言,官方提供了一个Arduino IDE用开发。除了使用传统的编译工具链之外,Arduino 项目还提供了一个基于 Processing 语言项目的集成开发环境。另外,一些少儿编程教育软件提供了对 Arduino 的可视化编程。

在这里插入图片描述

七、Arduino指针运算符
是用于操作指针的符号,指针是一种特殊的变量,它可以存储另一个变量的地址。指针运算符有以下几种:
&(引用运算符):用于获取一个变量的地址,并赋值给一个指针。例如,如果x是一个变量,那么&x表示x的地址。
(解引用运算符):用于获取一个指针所指向的变量的值,并赋值给另一个变量。例如,如果p是一个指针,那么p表示p所指向的变量的值。
->(箭头运算符):用于访问一个指针所指向的结构体或类的成员。例如,如果p是一个指向结构体或类的指针,那么p->a表示p所指向的结构体或类的成员a。
[](下标运算符):用于访问一个数组或字符串的元素。例如,如果a是一个数组或字符串,那么a[i]表示a的第i个元素。实际上,a[i]等价于
(a+i),即先将a作为一个指针加上i,然后解引用得到元素。

4、[](下标运算符)
是一种用于访问数组元素的运算符。它的一般形式为:

数组名[下标]

它的含义是:先通过数组名找到数组的起始地址,然后再根据下标计算出相应元素的地址,最后访问该元素的值。下标从0开始,表示第一个元素,依次递增,最大值为数组长度减1。

[]运算符的应用场景主要有以下几种:
1)当我们需要存储多个相同类型的数据时,我们通常使用数组来保存这些数据,然后通过[]运算符来访问数组中的每个元素。例如:

//定义一个整型数组,存储10个学生的成绩
int scores[10] = {90, 85, 92, 88, 95, 80, 76, 83, 91, 89};

//在setup函数中打印数组中每个元素的值
void setup() {
  //打开串口通信,波特率为9600
  Serial.begin(9600);
  
  //使用for循环遍历数组中的每个元素
  for (int i = 0; i < 10; i++) {
    //通过[]运算符访问第i个元素的值,并打印到串口监视器
    Serial.print("scores[");
    Serial.print(i);
    Serial.print("] = ");
    Serial.println(scores[i]);
  }
}

void loop() {
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2)当我们需要使用字符串时,我们通常使用字符数组来存储字符串,然后通过[]运算符来访问字符串中的每个字符。例如:

//定义一个字符数组,存储一个字符串
char message[20] = "Hello, Arduino!";

//在setup函数中打印字符串中每个字符的ASCII码值
void setup() {
  //打开串口通信,波特率为9600
  Serial.begin(9600);
  
  //使用for循环遍历字符串中的每个字符
  for (int i = 0; i < 20; i++) {
    //通过[]运算符访问第i个字符,并打印其ASCII码值到串口监视器
    Serial.print("message[");
    Serial.print(i);
    Serial.print("] = ");
    Serial.println(message[i], DEC); //DEC表示十进制格式
  }
}

void loop() {
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

3)当我们需要使用二维数组时,我们通常使用两层[]运算符来访问二维数组中的每个元素。例如:

//定义一个二维整型数组,存储3行4列的数据
int matrix[3][4] = {{1, 2, 3, 4},
                    {5, 6, 7, 8},
                    {9, 10, 11, 12}};

//在setup函数中打印二维数组中每个元素的值
void setup() {
  //打开串口通信,波特率为9600
  Serial.begin(9600);
  
  //使用双重for循环遍历二维数组中的每个元素
  for (int i = 0; i < 3; i++) { //外层循环控制行数
    for (int j = 0; j < 4; j++) { //内层循环控制列数
      //通过两层[]运算符访问第i行第j列的元素,并打印到串口监视器
      Serial.print("matrix[");
      Serial.print(i);
      Serial.print("][");
      Serial.print(j);
      Serial.print("] = ");
      Serial.println(matrix[i][j]);
    }
    Serial.println(); //换行
  }
}

void loop() {
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

[]下标运算符的注意事项主要有以下几点:
1)[]运算符只能用于数组名,不能用于普通变量。如果要访问普通变量的值,可以直接使用变量名。
2)[]运算符的优先级高于赋值运算符=,所以在给数组元素赋值时,不需要加括号。例如:scores[0] = 90;正确,scores[0] = 90;错误。
3)[]运算符的下标必须是整型或字符型的常量或变量,不能是浮点型或字符串型。例如:scores[0]正确,scores[0.5]或scores[“a”]错误。
4)[]运算符的下标不能越界,即不能超过数组的长度范围。例如:对于长度为10的数组scores,scores[9]正确,scores[10]或scores[-1]错误。

当在Arduino(C++)中使用下标运算符[]时,它通常用于访问数组或指针所指向的内存块中的特定元素。下面是三个实际运用程序案例,展示了[]运算符的使用:

1)访问数组元素(Accessing array elements):

void setup() {
  int arr[] = {1, 2, 3, 4, 5};

  cout << "Element at index 2: " << arr[2] << endl;
  // 输出:Element at index 2: 3

  arr[3] = 10;
  // 将数组索引为 3 的元素设置为 10
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在上述示例中,我们使用下标运算符[]来访问数组arr中的特定元素。通过指定索引号,我们可以获取或修改数组中相应位置的值。

2)访问指针指向的内存块中的元素(Accessing elements in the memory block pointed by a pointer):

void setup() {
  int* ptr = new int[5];  // 分配一个包含 5 个整数的内存块

  for (int i = 0; i < 5; i++) {
    ptr[i] = i * 2;  // 使用下标运算符设置内存块中的元素值
  }

  delete[] ptr;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这个示例中,我们使用new运算符动态分配了一个包含 5 个整数的内存块,并将分配的内存地址存储在指针ptr中。然后,使用下标运算符[]来访问指针所指向的内存块中的特定元素。通过循环和递增索引,我们可以为内存块中的每个元素设置不同的值。

3)访问类对象中的数组成员(Accessing array members in a class object):

class MyClass {
private:
  int numbers[5];

public:
  int& operator[](int index) {
    return numbers[index];
  }
};

void setup() {
  MyClass obj;
  obj[0] = 10;  // 使用下标运算符设置类对象中的数组元素值

  int value = obj[3];  // 使用下标运算符获取类对象中的数组元素值
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这个示例中,我们定义了一个名为MyClass的类,其中包含一个名为numbers的整数数组成员。我们重载了下标运算符[],使得可以使用下标运算符来访问类对象中的数组元素。通过重载[]运算符,我们可以像操作数组一样操作类对象中的数组成员。

这些示例展示了下标运算符[]的实际应用。它可以用于访问数组元素、指针指向的内存块中的元素以及类对象中的数组成员。通过下标运算符,我们可以方便地获取和修改特定位置的元素值。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/613133
推荐阅读
相关标签
  

闽ICP备14008679号