C经典 数组名访问二维数组
2016-05-02 11:04
295 查看
1.如图所示
a代表第0行首地址 a+1代表第1行首地址 ,
a+i代表第i行的首地址
*(a+i)代表取得a[i]数组的首地址
**(a+i)代表取得a[i]数组的首地址指向的值,如果i=1,则=9
2.事例代码
a代表第0行首地址 a+1代表第1行首地址 ,
a+i代表第i行的首地址
*(a+i)代表取得a[i]数组的首地址
**(a+i)代表取得a[i]数组的首地址指向的值,如果i=1,则=9
2.事例代码
#include <stdio.h> int main(int argc, const char * argv[]) { // 定义二维数组 int a[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9,10,11,12} }; //列指针 a[0]=&a[0][0], a[0]+1=&a[0][1], a[0]+2=&a[0][2] printf("&a[0] = %p\n", &a[0]);//=0x7fff5fbff840 printf("&a[0][0] = %p\n", &a[0][0]);//=0x7fff5fbff840 printf("a[0]+1 = %p\n", a[0]+1);//=0x7fff5fbff844 printf("&a[0][1] = %p\n", &a[0][1]);//=0x7fff5fbff844 printf("a[0]+2 = %p\n", a[0]+2);//=0x7fff5fbff848 printf("&a[0][2] = %p\n", &a[0][2]);//=0x7fff5fbff848 //------------------------- //行指针 a[0] a[1] a[2] //a+1 第二行首地址 //a[i]+j 获取a[i][j]地址 //*(a[i]+j) 获取a[i][j]的值 for (int i = 0; i < 3; i ++) { for (int j = 0; j < 4; j ++) { printf("%d\t",*(a[i]+j)); printf("%d\t",*(*(a+i)+j));//*(a+i) = a[i] } printf("\n"); } printf("\n"); return 0; }
相关文章推荐
- HDU-ACM2036
- Java中的基础----JVM加载class文件的原理
- Git - revert & reset 4000
- 【裸奔吧linux】tcpdump:包捕获器
- HDU-ACM2035
- linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍
- Java中String
- Java中String
- mysql:数据表的基本操作
- CoreThink主题开发(六)使用H-ui开发博客主题之首页友情链接标签混排
- javascript实现列表切换效果
- 理解Hadoop HDFS的配额和fs, fsck工具
- HDU-ACM2034
- 探索《How Tomcat Works》心得(一)
- php面向对象 练习
- 删除排序链表中的重复元素
- C++连接数据库一
- Android事件分发机制详解
- Jquery 获取对象的几种方式详细介绍
- HDU-ACM2033