int (*p)[4] p 是二级指针 二维数组 二级指针 .xml
pre{
line-height:1;
color:#2f88e4;
background-color:#e9ffff;
font-size:16px;}.sysFunc{color:#3d7477;font-style:italic;font-weight:bold;}
.selfFuc{color:#a0b684;}
.bool{color:#86ddd8;}
.condition{color:#94e269;font-weight:bold;}
.key{color:#ae0bfd;}
.var{color:#e81cb6;font-style:italic;}
.Digit{color:#ef09ef;font-weight:bold;}
.includePre{color:#e4882f;}
.operator {color:#96d186;font-weight:bold;}
试验一:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[4];
for(p=&a[0];p<&a[0]+3;p++)
cout<<&p<<endl;
0012FF40
0012FF40
0012FF40
for(p=&a[0];p<&a[0]+3;p++)
cout<<p<<endl;
0012FF44
0012FF54
0012FF64
for(p=&a[0];p<&a[0]+3;p++)
cout<<*p<<endl;
0012FF44
0012FF54
0012FF64
for(p=&a[0];p<&a[0]+3;p++)
cout<<**p<<endl;
1
5
9
总结如下:
p是一个二级指针
&p 是保存这个二级指针的单元地址 :0012FF40
p的值为:0012FF44
*p 是p所指向单元的内容,因为p是二级指针而且p指向一个组合单元(由四个整形共同组成),因此 编译器将 *p解释为组合单元中第一个元素的地址:0012FF44
**p 是第一行第一个元素的值 1
这个二级指针是很特殊的,因为: p和*p的值都是相同的 但是编译器会对他们做出不同的解释,p 解释为行的首地址,操作单位为行, *p 解释为行的第一个元素的地址, 操作单位为元素
同理 二维数组名a,也是一个二级指针
a 是行的首地址
*a 是行的第一个元素的首地址
试验二:
for(int i=0;i<12;i++)
cout<<**a<<endl;
1
1
1
1
1
1
1
1
1
1
1
1
for(int i=0;i<12;i++)
cout<<**(a+i)<<endl;
1
5
9
4232719
1447838469
1245116
476002356
4269248
2088857559
-2141931795
2088999592
0
for(int i=0;i<12;i++)
cout<<*(*a+i)<<endl;
1
2
3
4
5
6
7
8
9
10
11
12
for(int i=0;i<12;i++)
cout<<&a<<endl;
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
for(int i=0;i<12;i++)
cout<<a<<endl;
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
for(int i=0;i<12;i++)
cout<<*a<<endl;
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
0012FF44
for(int i=0;i<12;i++)
cout<<**a<<endl;
1
1
1
1
1
1
1
1
1
1
1
1
由上可看出 数组名是一个特殊的指针 因为&a 与 a 的值相同 , 也就是系统不为数组名另分配一个地址空间
另外,数组名也是一个二级指针
本文使用 书画小说软件 发布,内容与软件无关,书画小说软件 更惬意的读、更舒心的写、更轻松的发布。
int (*p)[4] p 是二级指针 二维数组 二级指针 .xml的更多相关文章
- C++笔记-数组指针/二维数组转换指针
参考资料: 1. 作者 BensonLaur :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/ ...
- [C++]数组与指针[二维数组与指针]
- 二维数组和指针(C语言)
二维数组和指针 二维数组和指针1.二维数组和数组元素的地址若有以下定义:int *p, a[3][4]; 1)二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的 ...
- C/C++——二维数组与指针、指针数组、数组指针(行指针)、二级指针的用法
本文转载自:https://blog.csdn.net/qq_33573235/article/details/79530792 1. 二维数组和指针 要用指针处理二维数组,首先要解决从存储的角度对二 ...
- C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数
1. 数组名 C语言中的数组名是一个特殊的存在, 从本质上来讲, 数组名是一个地址, 我们可以打印一个指针的值,和打印一个数组的值来观察出这个本质: int nArray[10] ={ 0 }; in ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- C语言教学--二维数组和指针的理解
对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...
- 关于c语言二维数组与指针的个人理解及处理办法。
相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...
- C指针 指针和数组 二维数组的指针 指针应用
直接到变量名标识的存储单元中读取变量的值--直接寻址 通过其他变量间接找到变量的地址读取变量的值--间接寻址 指针变量存放地址 显示变量的地址 指针变量使用前必须初始化,若不知指向哪,可先指向NULL ...
随机推荐
- 生产环境的redis高可用集群搭建
这里只是总结一下安装步骤 如果要了解redis集群高可用的原理,推荐仔细看一遍配置文件示例http://download.redis.io/redis-stable/redis.conf,源码包里也有 ...
- wamp集成环境开启虚拟主机多站点功能
方法/步骤 如果不是全白色,说明没有正常启动,先解决这个情况再进行下一步操作. 我们一键安装wamp到D盘,并可以正常启动,状态如下图所示: 在D:\wamp\bin\apache\Apach ...
- javascript 简繁转换
js 简繁转换 function copy(ob) { var obj=findObj(ob); if (obj) { obj.select();js=obj.createTextRange();js ...
- ARM处理器的寄存器,ARM与Thumb状态,7中运行模式 【转】
转自:http://blog.chinaunix.net/uid-28458801-id-3494646.html ARM处理器工作模式一共有 7 种 : USR 模式 正常用户模式,程序正常 ...
- 《OD学hadoop》第一周0625
一.实用网站 1. linux内核版本 www.kernel.org 2. 查看网站服务器使用的系统 www.netcraft.com 二.推荐书籍 1. <Hadoop权威指南> 1- ...
- 利用XPath读取Xml文件
之所以要引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素.可以把XPath比作文件管理路径:通过文件管理路 径,可以按照一定的规则查找到所需要的文件:同样,依据X ...
- Shadow mapping
http://www.cnblogs.com/cxrs/archive/2009/10/17/1585038.html 1.什么是Shadow Maping? Shadow Mapping是 ...
- java读取Properties文件
方法一.通过java.util.Properties读取 Properties p=new Properties(); //p需要InputStream对象进行读取文件,而获取InputStream有 ...
- POJ 2528 (线段树 离散化) Mayor's posters
离散化其实就是把所有端点放在一起,然后排序去个重就好了. 比如说去重以后的端点个数为m,那这m个点就构成m-1个小区间.然后给这m-1个小区间编号1~m-1,再用线段树来做就行了. 具体思路是,从最后 ...
- js作用域的一个小例子
var foo = function(){ var a =3,b=5; var bar = function(){ var b=7,c=11; alert("111a="+a+&q ...