C语言:二维数组与指针小程序
来源:互联网 发布:爱普生t50清零软件 编辑:程序博客网 时间:2024/05/23 23:09
二维数组与指针
要点:
1.a:数组首元素地址,a数组首元素本身包括两个int的数组,所以a是包含两个int数组的地址。
2.a[0]:与首元素地址&a[0][0]相同。
3.a[0]是一个整数大小对象的地址,a是两个整数大小对象的地址,由于它们始终开始于同一个地址,所以a[0]和a数值相同。
4.a对应首元素a[0]地址,由于a[0]本身是地址,所以对a取值:**a
下面来看一个实际的程序:
int a[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};
printf("a = %p a + 1 = %p\n", a, a + 1);
printf("a[0] = %p a[0] + 1 = %p\n", a[0], a[0] + 1);
printf("*a = %p *a + 1 = %p\n", *a, *a + 1);
printf("a[0][0] = %d\n", a[0][0]);
printf("*a[0] = %d\n", *a[0]);
printf("**a = %d\n", **a);
printf("*(a[0] + 1) = %d\n", *(a[0] + 1));
printf("a[2][1] = %d\n", a[2][1]);
printf("*(*(a + 2) + 1) = %d\n", *(*(a + 2) + 1));
printf("*(*(a + 2)) = %d\n", *(*(a + 2)));
输出结果为下:
a = 0x7fff5fbff7a0 a + 1 = 0x7fff5fbff7a8 // a和a[0] 均表示地址,然而它们+1后的值不同,正是验证了要点3
a[0] = 0x7fff5fbff7a0 a[0] + 1 = 0x7fff5fbff7a4
*a = 0x7fff5fbff7a0 *a + 1 = 0x7fff5fbff7a4 // a表示数组首元素a[0]地址,*a便表示数组首元素a[0]地址的值,而a[0]又是a[0][0]地址,即a[0]=&a[0][0];所以*a也是地址
a[0][0] = 1
*a[0] = 1 //因为a[0] = &a[0][0]
**a = 1 //地址的地址a,取两次值
*(a[0] + 1) = 2
a[2][1] = 6
*(*(a + 2) + 1) = 6 //利用指针寻址
*(*(a + 2)) = 5
看明白这个程序,二维数组与指针就有了更加清晰的认识。
- C语言:二维数组与指针小程序
- c语言二维数组与指针
- c语言二维数组与指针
- C语言指针与二维数组
- C语言中的二维数组与指针
- C语言指针与二维数组
- c语言二维数组与指针
- C语言二维数组与指针
- C语言--二维数组与指针浅谈
- C语言指针与二维数组
- C语言指针与二维数组
- C语言指针与二维数组
- C语言二维数组与指针
- 104 C语言指针与二维数组
- c语言二维数组与指针
- C语言二维数组与指针数组以及行指针
- C语言二维数组指针
- 《C语言及程序设计》程序阅读——二维数组与指针
- Whu oj Problem 1603 - Minimum Sum
- 内嵌事件处理函数的解决办法 用户在点击某个链接时弹出一个新的窗口。
- 启动流程与主要启动记录区(MBR)
- 2016华为笔试题——整数之循环节点求和
- 2010年山东省第一届ACM解SDUT2151-2160 set,floyd变形
- C语言:二维数组与指针小程序
- oracle 11g安装教程
- C 语言设置 Console 文字和背景的颜色的方法
- JDK动态代理(源码解析)
- 【Java学习-J.160406.0.6】笔记5-Linux基础-linux进程管理
- linux中库文件的生成和使用
- maven-weblogic-plugin引见
- IO流结构图
- 欢迎使用CSDN-markdown编辑器