C/C++指向指针的指针、指向数组的指针以及存放指针的数组
关于指针这块,有段时间没有接触了(因为最近都是在使用java),感觉有点生疏了,昨天同学问了关于一个指针的问题,当时竟然卡住了,好吧,还是基础不够牢靠啊,突然觉得掌握了东西还是要以某种形式记录下来,光靠记忆还是不行,不能懒惰,所以把昨天的问题总结下。
昨天同学的问题如下:
int ** p_point;p_point = new int*[2];
问new右边的是什么意思,如果写成new (int*)[2]又会怎样?
第一种写法(new int*[2]):正确的,因为它表示的是申请了一个长度为2数组,数组中存放的是指向int型的指针;
第二种写法(new (int *)[2]):错误的,它表示的是指向数组的指针,该数组是一个长度为2的int型数组,编译器是不支持这样申请空间的。
(1)int ** pp; 表示指向指针的指针;(指针的指针)
(2)int *p[3]; 表示一个长度为3的数组,数组中存放的是指向int型的指针;(存放指针的数组)
(3)int (*p)[3]; 表示p是一个指针,指向一个长度为3的int型数组;(指向数组的指针)
如何证明上面关于存放指针的数组和指向数组的指针说法的正确呢?通过对p的地址进行+1,来查看p+1和p的地址相差值就可以明了。(32bit编译器)如果相差4,说明是存放指针的数组,如果相差4*3(这里是3,也就是所指向的数组的长度),程序如下:
int (*p)[3];p = new int[2][3];int i = 1,j = 2;int *pb[2] = {&i,&j};printf("指向数组的指针: %x, %x\n",(p+1),p);printf("存放指针的数组: %x,%x\n",(pb+1),pb);
运行结果如下:
以上乃个人理解,如有不对,望请指出,不甚感激。
C/C++指向指针的指针、指向数组的指针以及存放指针的数组相关推荐
- 数组拷贝问题,实际上是指针指向发生变化
public class Test{public static void main(String args[]){int[] a= {1,2,3};int[] b={4,5,6};//输出两个数组Sy ...
- 指针常量 和 指向常量的指针区别
指针常量 说明这个指针是常量,是不可以修改的 如 有一个数组 char ch[5]="list";//用5位是因为 默认有一个0放在最低位 char * const pstr = ...
- C中二级指针与它指向的一级指针之间的秘密(深入++*pptr)
C语言里二级指针的意思是指向指针的指针,一级指针就是普通的指针,一个二级指针一定是对应着一个一级指针,那么二级指针和这个它对应的一级指针之间有什么秘密呢? 1. 首先明白在二级指针使用中 ++*ppt ...
- 常引用、常量指针、指针常量、指向常量的常指针、空指针与野指针解释
1.一.基础知识 引用并非对象 引用必须初始化 引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起 类型要严格匹配 int &a = 10; //错误:引用类型的初始值必须是 ...
- (转)函数指针,指针函数,指向函数的指针,返回指针的函数
摘要: 在学习C语言时,一个比较容易混淆的概念就是函数指针.指针函数.返回值为指针的函数.本文将对这三个概念进行区分.指针函数就是返回值为指针的函数,两个本质上是同一事物,只是叫法不同.函数指针就是一 ...
- C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变
C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变 例子: class A{int a;int b; };class B:public A{int c; };int main(){B* ...
- c语言位向量机伞_一文读懂C语言精华-指针变量和指向指针的指针
1978年贝尔实验室正式发表C语言,受到众多IT从业者的热捧,即使41年过去了,C语言仍然牢牢占据最受欢迎编程语言前二的位置,许多人的程序开发之路也是从C语言开始的. 编程语言受欢迎排名 C语言简洁紧 ...
- 常量指针、指针常量以及指向常量的指针常量
三个名词虽然非常绕嘴,不过说的非常准确.用中国话的语义分析就可以很方便地把三个概念区分开. 一)常量指针. 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量 ...
- 指针类型和指向的数据类型
1.指针类型和指向的数据类型不同时 #include <stdio.h> //指针除了指明地址以外,还指明了类型,类型决定了数据的大小和数据的解析方式 int main() {char c ...
最新文章
- [C] [字节跳动] [编程题] 手串
- 实现DataGridView中同一列不同行控件类型的不同
- android 多结点进度条,Android使用Kotlin实现多节点进度条
- 全志 增加启动默launcher函数 Patch
- C#中简单的正则表达式(也经常会用到的)
- Nacos客户端配置
- 【转】CT球管小知识--热容量
- 【白皮书分享】2021年B2B内容营销白皮书.pdf(附下载链接)
- 论ul、ol和dl的区别
- Android入门(9)AudioRecord和AudioTrack类的使用【转】http://blog.sina.com.cn/s/blog_6309e1ed0100j1rw.html...
- nuxt解决首屏加载慢问题_为什么Nuxt.js创建服务器端渲染的应用程序更有优势?...
- 遗传算法原理及代码讲解
- Intel Optane 内存个人安装与使用步骤 Dell 灵越
- Xamarin 跨平台应用开发(4)—— 页面布局
- hyperterminal使用教程_Win 7 使用 XP的超级终端 hyper terminal
- Scratch 怪兽动画+骨骼矢量素材编程素材免费下载!
- 信息收集-CDN绕过
- finecms全局常用标签
- 【python基础】英文大小写函数
- JVM和Java体系架构