关于指针这块,有段时间没有接触了(因为最近都是在使用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++指向指针的指针、指向数组的指针以及存放指针的数组相关推荐

  1. 数组拷贝问题,实际上是指针指向发生变化

    public class Test{public static void main(String args[]){int[] a= {1,2,3};int[] b={4,5,6};//输出两个数组Sy ...

  2. 指针常量 和 指向常量的指针区别

    指针常量 说明这个指针是常量,是不可以修改的 如 有一个数组 char ch[5]="list";//用5位是因为 默认有一个0放在最低位 char * const pstr = ...

  3. C中二级指针与它指向的一级指针之间的秘密(深入++*pptr)

    C语言里二级指针的意思是指向指针的指针,一级指针就是普通的指针,一个二级指针一定是对应着一个一级指针,那么二级指针和这个它对应的一级指针之间有什么秘密呢? 1. 首先明白在二级指针使用中 ++*ppt ...

  4. 常引用、常量指针、指针常量、指向常量的常指针、空指针与野指针解释

    1.一.基础知识 引用并非对象 引用必须初始化 引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起 类型要严格匹配 int &a = 10; //错误:引用类型的初始值必须是 ...

  5. (转)函数指针,指针函数,指向函数的指针,返回指针的函数

    摘要: 在学习C语言时,一个比较容易混淆的概念就是函数指针.指针函数.返回值为指针的函数.本文将对这三个概念进行区分.指针函数就是返回值为指针的函数,两个本质上是同一事物,只是叫法不同.函数指针就是一 ...

  6. C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变

    C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变 例子: class A{int a;int b; };class B:public A{int c; };int main(){B* ...

  7. c语言位向量机伞_一文读懂C语言精华-指针变量和指向指针的指针

    1978年贝尔实验室正式发表C语言,受到众多IT从业者的热捧,即使41年过去了,C语言仍然牢牢占据最受欢迎编程语言前二的位置,许多人的程序开发之路也是从C语言开始的. 编程语言受欢迎排名 C语言简洁紧 ...

  8. 常量指针、指针常量以及指向常量的指针常量

    三个名词虽然非常绕嘴,不过说的非常准确.用中国话的语义分析就可以很方便地把三个概念区分开.  一)常量指针. 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量 ...

  9. 指针类型和指向的数据类型

    1.指针类型和指向的数据类型不同时 #include <stdio.h> //指针除了指明地址以外,还指明了类型,类型决定了数据的大小和数据的解析方式 int main() {char c ...

最新文章

  1. [C] [字节跳动] [编程题] 手串
  2. 实现DataGridView中同一列不同行控件类型的不同
  3. android 多结点进度条,Android使用Kotlin实现多节点进度条
  4. 全志 增加启动默launcher函数 Patch
  5. C#中简单的正则表达式(也经常会用到的)
  6. Nacos客户端配置
  7. 【转】CT球管小知识--热容量
  8. 【白皮书分享】2021年B2B内容营销白皮书.pdf(附下载链接)
  9. 论ul、ol和dl的区别
  10. Android入门(9)AudioRecord和AudioTrack类的使用【转】http://blog.sina.com.cn/s/blog_6309e1ed0100j1rw.html...
  11. nuxt解决首屏加载慢问题_为什么Nuxt.js创建服务器端渲染的应用程序更有优势?...
  12. 遗传算法原理及代码讲解
  13. Intel Optane 内存个人安装与使用步骤 Dell 灵越
  14. Xamarin 跨平台应用开发(4)—— 页面布局
  15. hyperterminal使用教程_Win 7 使用 XP的超级终端 hyper terminal
  16. Scratch 怪兽动画+骨骼矢量素材编程素材免费下载!
  17. 信息收集-CDN绕过
  18. finecms全局常用标签
  19. 【python基础】英文大小写函数
  20. JVM和Java体系架构

热门文章

  1. 信号与系统学习笔记 第三章
  2. 深度学习如何“助攻”医学影像?我们来听听学界大拿的解释 | CNCC 2017
  3. KDD‘20 | 如何建模互联网水军的对抗行为?
  4. Debug Hacks (1): 理解用GOT/PLT调用函数的原理
  5. 遍历SD卡寻找自己想要的文件
  6. 重新学习ava(三) ---- 面向对象之继承!
  7. 回收站是计算机硬盘,如何查找移动硬盘回收站
  8. 测试画面帧率及帧延时一种方法
  9. 超干货丨你想了解的短视频私域流量玩法都在这
  10. 浙里办APP对接常见问题