前言
上一篇博客讲了指针的用法,本章来讲数组。首先明确一点,数组也是指针。
正文
1、数组的几种定义
int arr[5]; //不初始化
int arr[5] = {1,2,3,4,5}; //初始化
int arr[] = {1,2,3,4,5}; //如果初始化有值,可不写元素数目
2、数组名就是一个指针。
数组名arr是一个指针,值是数组中第一个元素的地址。找到第一个元素的地址后,之后元素的地址就找到啦。
arr[0]是第一个元素的值,arr[2]是第三个元素的值,中括号中的数字就是偏移量。
因为数组名arr是一个指针,其值是第一个元素的地址,所以下面这个等式总是正确的:
arr == & arr[0];
3、既然数组是指针,就可以在其他函数中读写本函数的数组元素值。
同前一篇讲指针一样,可以将数组名(即数组第一个元素的地址)传给其他函数,其他函数拿到数组的地址就能对其元素进行读写了。
4、数组指针运算
int arr[] = {1,2,3};
int* iptr = arr; // 将数组第一个元素的地址赋值给iptr
iptr++; // 指针加1,指向数组的下一个元素。
int tmp = *iptr;
总结
数组也是指针,函数间传递数组名,就是传递地址,读写即是对内存的读写。