首页 > 代码库 > C语言指针教程----入门到精通<二>

C语言指针教程----入门到精通<二>

数组与指针:

一:

指针既然可以指向变量,那么必然可以指向一个数组。本节探讨数组与指针的关系。首先读者必须明白,数组名代表数组中首元素的地址。


那么如何表示数组中其他元素的地址以及其他元素本身呢?

p+i或a+i就是a[i]的地址;相应的,

*(p+i)或*(a+i)就表示的a[i]元素。

已经提到了数组名代表数组首元素地址了,那么所有用数组名做参数的函数都可以改写

成用指针做参数的函数。

二:多维数组的情况。

这里,读者首先有个意识,多维数组每一维也都是一维数组。假设有个二维数组a[3][4],那么a[0],a[1],a[2]都是一个一维数组(他们是数组名,也是地址)。于是你能较为抽象的理解一下几个表示方法。

a                                   二维数组名,指向一维数组a[0],0行首地址

a+1, &a[1]                     一行首地址

*(a+1), a[1]                   一行零列元素地址

*(a+1)+2,a[1]+2             一行二列元素地址

*(*(a+1)+2), *(a[1]+2)    一行二列元素的值

上面这几个表示形式一定要注意,尤其是:a+1表示一行首地址,*(a+1)表示

一行零列元素地址,虽然他们的值时相同的,但是他们是不同的,a+1+1表示二行首地址,而*(a+1)+1表示一行一列元素的地址。

认真体会下面两个程序。



二维数组和指针的关系这方面很多东西很抽象,并且很多东西是反人类直觉的,博主理解起来也有些吃力,各位有什么方法也欢迎反馈。



C语言指针教程----入门到精通<二>