黑马程序员-C-二维数组&指针数组&二维数组指针
来源:互联网 发布:南京未来造价软件 编辑:程序博客网 时间:2024/04/30 22:30
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、二维数组:a[3][5]
因为二维数组可以看作是一个特殊的一维数组:每一行的单个元素是一个一维数组。如a[3][5],有3个元素,每个元素是一个含有5个元素的一维数组。所以a[0],a[1]就分别代表第一、二行的地址。
a = &a[0] = &a[0][0] = a[0] —> 第一行地址 = 第一列第一个元素地址
a + 1 = &a[1] = &a[1][0] = a[1] —> 第二行地址 = 第二列第一个元素地址
a + 2 = &a[2] = &a[2][0] = a[2] —> 第三行地址 = 第三列第一个元素地址
a[0] = a = &a[0] = &a[0][0] ——> 第一列地址
a[0] + 1 = &a[0][1] ——> 第二列地址
a[0] + 2 = &a[0][2] ——> 第三列地址
a[0] + 3 = &a[0][3] ——> 第四列地址
a[0] + 4 = &a[0][4] ——> 第五列地址
#include <stdio.h>int main(int argc, const char * argv[]) { int a[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; //二维数组// 由上分析知,a[0],a[1],a[2]也是代表第一、二、三的地址,则a[1]+2代表a[1][2]的地址,即&a[1][2]// i代表行,j代表列。则a[i] = *(a + i), a[i][j] = *(*(a + i) + j)// 遍历数组 for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { printf("%d\t", *(*(a + i) +j)); } }// ************************************************************/* 一维指针数组定义格式: 类型名称 *数组名[数组长度] 如 int *p[5],表示这个一维指针数组,含有5个指针,这些指针指向整型数据的地址。 记忆方法:运算符的优先级 []大于*,所以其相当于*(p[5]),p[5]是一个数组,说明其首先是一个数组,然后是一个装有指针的数组。它的作用是一个指针集合。 注意:因为此外p是指针数组的首地址,所以其是一个二维指针。 */ int b, c, d; b = 1; int *p[3] = {&b, &c, &d}; //p = &p0 , p[0] = &b //下面两句代码输出地址相同 printf("%p\n", p[0]); printf("%p\n", &b); //下面两句代码输出地址相同 printf("%p\n", p); printf("%p\n", &p[0]); //下面两句代码输出地址相同 printf("%d\n", *p[0]); printf("%d\n", **p); //因为此外p为二级指针,所以其可以指向二维数组// **************************************************************/* 二维数组指针 1.定义格式: 数据类型 (* 指针变量名称)[指向的二维数组列数] 如 int (*p)[3], 表示指针p可指向列数为3的整型数组。 2.用途 二维数组指针是一个行指针,用来指向二维数组的每一行,存放的是行的首地址 */ int a3[2][3] = {1,2,3,4,5,6}; int (*p3)[3] = a3; //给二维数组指针p3赋值,使其指向二维数组a3 //遍历数组a3,可用指针p3代替数组名a3,这在需要变量的情况有用,因为可以p3++,而不可以a3++,因为a3是常量 for (int i = 0; i < 2; i++){ for (int j = 0; j < 3; j++) { printf("%d\t",*(*(p3+i)+j)); } } return 0;}
0 0
- 黑马程序员-C-二维数组&指针数组&二维数组指针
- 二维数组 数组指针
- 二维数组 指针数组
- [C]二维数组与指针
- C指针与二维数组
- C 指针与二维数组
- C语言二维数组指针
- <C++>指针和二维数组
- 数组指针,指针数组,二维数组,二维数组指针
- 数组指针,指针数组,二维数组,二维数组的指针
- C/C++创建二维数组/指针数组
- 二维指针与二维数组
- 二维数组与二维指针
- 二维数组和二维指针
- 二维数组和二维指针
- 二维数组和二维指针
- 二维指针和二维数组
- 二维数组和二维指针
- 08-25 convertView、ViewHolder、MyfruitPractice、divider、Header
- 游戏月流水过亿的原因,浅谈<神魔之塔>
- web前端html+css常用布局02
- AJAX POST&跨域 解决方案 - CORS
- .net反射之使用反射技术为控件赋值
- 黑马程序员-C-二维数组&指针数组&二维数组指针
- acl 备忘
- 单源最短路径算法的MapReduce实现(Metis版本)
- uva103Stacking Boxes——dp
- web前端html+css常用布局03
- ios内联函数 inline
- Discriminative Locality Alignment(DLA)模型
- SQL基本操作<学习笔记>
- fedora22安装多媒体插件