C++指针数组
来源:互联网 发布:嫁给凤凰男 知乎 编辑:程序博客网 时间:2024/05/21 22:21
1.前言
1.1什么是指针数组
如果一个数组的每个元素都是指针变量,这个数组就是指针数组。指针数组的每个元素必须同一类型的指针。声明方式:数据类型 *数组名[下标表达式]
1.2注意
由于指针数组的每一个元素都是一个指针,必须先赋值后引用,因此,声明数组之后,对指针元素赋初值是比不可少的。
2.利用指针数组输出单位阵
#include<iostream>using namespace std;int main(){ int line1[] = { 1, 0, 0 }; int line2[] = { 0, 1, 0 }; int line3[] = { 0, 0, 1 }; //定义整形指针数组并初始化 int *pLine[3] = { line1, line2, line3 }; for (int i = 0; i < 3; i++){ for (int j = 0; j < 3; j++){ cout << pLine[i][j] << " "; } cout << endl; } return 0;}
上例中pLine[i][j] 和 *(pLine[i] + j)是等价,即先把指针数组pLine所存储的第i个指针读出,然后读取它所指向的地址后面的第j个数。
现在把二维数组做对比,二维数组在内存中是以行优先的方式进行存储的,因此,对于二维数组可以将其理解为一维数组的一维数组,数组名是它的首地址,这个数组元素的个数就是行数,每个元素是一个一维数组。
声明一个二维数组,例如:
int array2[2][3]={{11, 12, 12},{21, 22, 23},{31, 32, 33}};
array2[0]是一个长度为3的一维数组,array2[0]表示指向该一维数组首地址的整型指针,这和一维数组的数组名表示指向数组首地址的指针是一个道理。
因此,可以用(array2[0]) 表示 array2[0][0] , 用(array2[0] + 1) 来表示array2[0][1].
3.总结
上面两个例子中,
pLine[i][j] 和 **array2[i][j]的不同之处在于,
pLine[i]的值需要通过读取指针数组pLine的第i个元素才能得到,
而array2[i]的值是通过array2的首地址计算来得到。
0 0
- 【C/C++】指针数组
- C指针 --- 指针数组 数组指针
- 【c/c++】指针数组和数组指针
- 【C++】指针(3):指针&数组
- 【C++】指针(4):指针数组
- c 指针,二级指针,数组
- c语言 数组 指针
- [C]指针数组
- C语言--指针,数组
- [C]函数指针数组
- C 函数指针数组
- c动态分配 数组指针
- C数组与指针
- c++---数组和指针
- c语言指针数组
- C 数组指针
- c 指针与数组
- C 数组与指针
- get和post的区别
- 第1章关键角色及其职责——明确职责
- Java中的多态
- Java中LinkedList原理解析
- 微信登陆无法拉起授权界面
- C++指针数组
- 关于“单元组”数量的计算
- Java中基本数据类型与对应的包装类和引用数据类型
- 关于jsp页面page指令中errorpage和iserrorpage属性
- 常用的OpenCV函数速查
- 第五周项目1(2)三角形类雏形
- 今天开通博客,希望把我的学习过程的心得和经验记录一下
- Java中的引用与c++的指针区别
- Spring源码导入MyEclipse