C/C++之数组与指针关系-全解全息
来源:互联网 发布:hany是什么牌子 知乎 编辑:程序博客网 时间:2024/04/25 08:06
/************************************************************************//* 一维数组名是一个指针常量,其值是此数组的第一个元素的地址,即此数组的首地址所以,它可以直接赋值给指针变量,因为其数据类型都是地址类型。二维及多维(n)数组名不是像一维数组名那样的指针常量,是指向其(n-1)维数组的指针,因此,是不能像一维数组名那样赋值给指针变量的。多维数组在赋值时遵循的是最深维优先原则,即赋值最先付给右边维数最深的维。操作时遵循的是左优先原则,即在操作时先确定的是最左边的维,如定义数组int i[2][3][4][5][6];则i[1][2]表示的是最先把最左边的维给确定了的地址指针,即i[1][2][0][0][0] *//************************************************************************/#include <STDIO.H>int main(void){char i[2][8][8] = {"hello!"};//二维及以上的数组必须使用相应数量的大括号(都至少加一个大括号),其遵循的是最深优先原则,即当没有全部赋值时,其最先来赋值的是最深的维,即最右边的那一维,之后是次右边的,以此类推,没有赋值的,将被初始化为空。char * p;//p = i[0]; //错误,i[0]表示的是指向二维数组的指针p = i[0][0]; //正确,i[0][0]表示的是一维数组的地址// p = i[0][0][0]; //错误,i[0][0][0]表示的是具体的元素//* p = i[0][0][0]; //错误,p未被初始化,里边存放的是垃圾值,* p指向了没有操作权限的未知区域printf("%c\n", p[1]);//p的值是i[0][0]的首地址,那么p[1]表示的是已确定了行列都是0的基础上,第三维的下表是1的元素,就是字母 e .printf("%c\n", *(i[0][0]+2));//i[0][0]+2 表示的是在已经确定是第0行第0列的基础上,再进行的操作的自然是第三维了,对地址加减运算的结果是个整数值,所以要加个取地址的逆运算符(*),最终输出是字母 l .printf("%s\n", i[0][0]);//此处给出的是最后一维一整维的地址指针,所以要输出 %s .return 0;}/************************************************************************//* 此程序在VC++6.0中的运行结果是:elhello!Press any key to continue *//************************************************************************/
0 0
- C/C++之数组与指针关系-全解全息
- C指针与数组的关系
- C 二维数组与指针的关系
- C语言数组与指针的关系
- C/C++指针与数组的关系
- C语言的指针数组与数组指针关系
- C语言的指针数组与数组指针关系
- C/C++中变量作用域-全解全息
- 征服C指针之数组和指针的微妙关系
- c/c++中指针与字符数组,指针与数组,数组指针与指针数组之间的关系。
- <C语言>数组与指针详细知识点(全)
- C语言之数组与指针
- C语言之数组与指针
- c之指针与数组(1)
- C 杂谈之 指针与数组 (一)
- C 杂谈之 指针与数组 (二)
- c语言之指针与数组
- c语言之指针与数组
- hadoop之yarn状态机模型
- Java中泛型的理解(三)
- yum 镜像
- 引用计数型指针的的简单实现
- 【坑爹】mktime中的 tm_isdst解决办法
- C/C++之数组与指针关系-全解全息
- cin不能输入空格
- Windows下使用C++获取目录及子目录下所有文件
- MSChart图表控件使用说明介绍
- 【bzoj3201】【花神的浇花集会】【切比雪夫距离】
- MyEclipse使用手册(详细版)
- python3爬虫之入门和正则表达式
- String to Integer (atoi)
- MySQL索引选择不正确并详细解析OPTIMIZER_TRACE格式