【C语言】指针数组
⚔ 指针数组
一个数组的元素值为指针则是指针数组,指针数组是一组有序的指针的集合。 指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。
那么指针数组是怎么样的呢,如下代码所示↓
arr是一个数组,有⑤个元素,每个元素是一个整形指针
注意:除了每个元素的不同,而指针数组和普通数组在其它方面其实都是一样的!
运行结果🖊
12 17 55
12 17 55
arr 是一个指针数组,它包含了 3 个元素,每个元素都是一个指针,在定义 arr 的同时,我们使用变量 a、b、c 的地址对它进行了初始化,这和普通数组是多么地类似。
parr 是指向数组 arr 的指针,确切地说是指向 arr 第 0 个元素的指针(首元素的地址),它的定义形式应该理解为
int *(*parr)
,括号中的*
表示 parr 是一个指针,括号外面的int *
表示 parr 指向的数据的类型。arr 第 0 个元素的类型为 int *,所以在定义 parr 时要加两个 *。第一个 printf() 语句中,arr[i] 表示获取第 i 个元素的值,该元素是一个指针,还需要在前面增加一个 *(解引用) 才能取得它指向的数据,也即 *arr[i] 的形式。
第二个 printf() 语句中,parr+i 表示第 i 个元素的地址,*(parr+i) 表示获取第 i 个元素的值(该元素是一个指针),**(parr+i) 表示获取第 i 个元素指向的数据。
指针还可以与字符串相互结合进行使用,如下代码所示↓
需要注意的是,字符数组 str 中存放的是字符串的首地址,不是字符串本身,字符串本身位于其他的内存区域,和字符数组是分开的。
也只有当指针数组中每个元素的类型都是char *时,才能像上面那样给指针数组赋值,其他类型不行。
改成下面的形式,与上面的数组是等价的,如下代码所示↓
运行结果🖊
C <==> CSDN <==> Electricity
后续还会有高阶指针内容!喜欢还请多多支持吧 🌹
- 点赞
- 收藏
- 关注作者
评论(0)