C语言二维数组剖析【元素及元素地址的指针操作】
2015-09-17 16:10
330 查看
C语言二维数组指针操作,示例程序如下:
#include <stdio.h> #include <stdlib.h> int main() { int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; printf("a: %d\n", a); //元素1的地址,即第一个元素地址 printf("a[1][0]: %d\n", &a[1][0]);//元素5的地址 printf("*(a+1): %d\n", *(a + 1));//由输出结果看出,*(a+1)的地址为a[1][0]的地址 printf("a[1][1]: %d\n", &a[1][1]);//元素6的地址 printf("*(a+1)+1: %d\n", *(a + 1)+1);//由输出结果看出,*(a+1)+1的地址为a[1][1]的地址 printf("a+1: %d\n", a + 1); //由输出结果看出,a+1的地址为a[1][0](即元素5)的地址 printf("a[2][0]: %d\n", &a[2][0]);//元素9的地址 printf("a+2: %d\n", a + 2); //由输出结果看出,a+2的地址为a[2][0](即元素9)的地址 printf("*(*(a)): %d\n", *(*(a)));//*(*(a))即为a[0][0]的值 printf("*(*(a)+1): %d\n", *(*(a) + 1));//*(*(a)+1)即为a[0][1]的值 printf("*(*(a+1)): %d\n", *(*(a + 1)));//*(*(a + 1))即为a[1][0]的值 printf("*(*(a+1)+1): %d\n", *(*(a + 1)+1));//*(*(a + 1))即为a[1][1]的值 system("pause"); return 0; /**************************************** 结 论 1、(a+i) 代表整个第i行的地址,起始地址为第i行第一个元素的地址 2、*(a+i) 代表第i行第一个元素的地址 3、*(a+i)+j 代表第i行第j个元素的地址 即a[i][j]的地址 4、*(*(a+i)+j)) 代表a[i][j]的值 ****************************************/ }
//程序运行结果: /* a: 3143976 a[1][0]: 3143992 *(a+1): 3143992 a[1][1]: 3143996 *(a+1)+1: 3143996 a+1: 3143992 a[2][0]: 3144008 a+2: 3144008 *(*(a)): 1 *(*(a)+1): 2 *(*(a+1)): 5 *(*(a+1)+1): 6 请按任意键继续. . . */
相关文章推荐
- c++11基础学习(2)std::bind与std::function特性
- C++ 函数指针
- Python C++ interoperability
- c语言小工具
- Effective C++ ——初始化
- C++ Primer Plus(第6版) 第2章编程练习
- WinRT C++ byte* 转为 Ibuffer^(笔记)
- C++的异常处理
- C++中对象的常引用、动态建立和释放相关知识讲解
- 深入理解C++
- STL之vector的实现
- Effective C++ 改善程序与设计的55个具体做法 二周目笔记03
- 解析C++中指向对象的指针使用
- STL中的uninitialize系列
- Eclipse cdt c++11 blade 设置
- OSX Missing C++ header <__debug>修复
- C/C++结构体和类中的内存对齐
- C++编译程序时的内存分配
- 详解C++中的this指针与常对象
- POJ1003解题报告