Linux C语言进阶-D7~D8指针与数组

 一维数组

一维数组的数组名:就是一维数组的指针(起始地址)

如果int *px = x;则:

        x[i]、*(px+i)、*(x+i)、px[i]具有完全相同的功能:访问数组第i+1个数组元素

注意:1、指针变量和数组在访问数组元素时,具有相同的形式,因为指针变量和数组名都是地址量

        2、但指针变量和数组指针(数组名)在本质上不同,指针变量是地址变量,而数组指针是地址常量

Linux C语言进阶-D7~D8指针与数组_第1张图片

上图中,a+1本身就是个地址(相当于&a[1])

二维数组

使用一级指针遍历二维数组

第十行可以写成p = a[0]或者p = &a[0][0],但是不能写成p = a,因为p+1得到的是a[0][1]而a+1得到的是a[1][0]

Linux C语言进阶-D7~D8指针与数组_第2张图片

 可以把二维数组看成由多个一维数组组成的

Linux C语言进阶-D7~D8指针与数组_第3张图片

下图中, 加了*相当于改变了指针的移动的性质,由二维数组(行地址)变成了一维数组*(a+1)+1=a[1]+1,相当于a[1][1]

Linux C语言进阶-D7~D8指针与数组_第4张图片

下图中,方括号中的常量表达式表示指针加1,移动几个数据。下图中p+1移动3个数据

Linux C语言进阶-D7~D8指针与数组_第5张图片

新的写作方法:

Linux C语言进阶-D7~D8指针与数组_第6张图片

 

你可能感兴趣的:(Linux,c语言,c语言,开发语言)