谁能把你们开始理解指针和2维数组关系的方法教我啊!我头晕了哦

来源:百度知道 编辑:UC知道 时间:2024/06/06 18:27:13
很是郁闷 乱七八糟呀!

其实 不难理解
指针也是变量
像你用 int a;
char b;
分别整型 和 字符 型的变量
定义了 这些 变量, 在程序 运行的 时候,他们会被分配内存空间,当然也就有了首地址吧!
可能你要问了,什么是首地址呢
比如,在Tc里边 int 占两个字节,低字节的地址(也就是内存的编号)就是这个int型变量 的 首地址。
指针变量也是变量,但它的内容 存放的是 变量的地址。
至于二维数组,首先要说数组名,数组名是数组的首地址,二维数组的数组名 是个 行指针,指向的是 第0行的地址,如果想 用指针访问 某个二维数组的元素,就得先把它转成 元素指针,在通过*运算符,读出它的值。
一定要记住a[i]与*(a+i)是无条件等价的!
比如
int a[5][5];//你随便初始化
a是二维数组的首地址,a指向第0行
你可以通过以下几种方式得到a[2][2]的值,估计看完后,你就懂了。
a[2][2]//直接引用
刚才说过,a是行指针,不能直接通过它,得到数组元素,方法如下:
*(*(a+2)+2)
//解释:
从内到外,a+2指向第二行,
*(a+2)是元素指针,指向第二行第0个元素, 等价于a[2]
*(a+2)+2指向 第二行第2个元素 等价于a[2]+2
*(*(a+2)+2)取 第二行第2个元素 的值 等价于a[2][2]
是不是通过指针 也一样 得到了一样的结果。
指针是C语言的灵魂所在,一定要弄明白!
有问题 QQ:270495267