首页 > 代码库 > 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语言指针教程----入门到精通<二>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。