1.  
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int m{}, n{};
  9. cout << "m的地址为: -> " << &m << endl
  10. << "n的地址为: -> " << &n << endl << endl;
  11.  
  12. /* 指针数组 */
  13. int* b[] = {&m, &n}; //创建匿名【指针数组】,b指向数组b的每一个元素
  14. auto c = &b; // 创建指针c指向指针数组b第一个元素的地址
  15. int** d = b; // 也可以使用auto d = b,二级指针
  16.  
  17. cout << "b指针存放结果:" << b << endl
  18. << "b指针数组当前指向元素:" << *b << endl //*b == b[0]
  19. << "b指针数组当前指向元素指向内容:" << *b[] << endl << endl;
  20.  
  21. cout << "c指针存放结果:" << c << endl
  22. << "c指针数组当前指向元素:" << *c << endl
  23. << "c指针数组当前指向元素指向内容:" << *(*c)[] << endl << endl;
  24.  
  25. cout << "d指针存放结果:" << d << endl
  26. << "d指针数组当前指向元素:" << *d << endl
  27. << "d指针数组当前指向元素指向内容:" << *d[] << endl << endl;
  28.  
  29. /* 数组指针 */
  30. int list[] = {m, n};
  31. int (*p)[] = &list; //创建【数组指针】,指向数组list的第一个元素
  32.  
  33. auto q = p; //指针赋值, 浅拷贝,p为 “int (*)[2]”类型
  34. cout << "p的内存地址为:" << p << " 指向元素:"<< (*p)[] << endl
  35. << "q的内存地址为:" << q << endl;
  36.  
  37. int x = ; // 分配一块内存,标记为x,存放1,格式为 int*
  38. int* y = &x; // 分配一块内存,标记为y,存放x的地址,格式为 int*
  39. int** z = &y; // 分配一块内存,标记为z,存放x地址的地址,格式为 int**
  40. int** v = z; // 指针浅拷贝
  41. auto u = &y; // 同第三个,但是格式自动判断,指向关于x的指针y的存放地址
  42.  
  43. }
  1.  

      

m的地址为: -> 0x7ffd33436d9c
n的地址为: -> 0x7ffd33436da0

b指针存放结果:0x7ffd33436df0
b指针数组当前指向元素:0x7ffd33436d9c
b指针数组当前指向元素指向内容:2222

c指针存放结果:0x7ffd33436df0
c指针数组当前指向元素:0x7ffd33436df0
c指针数组当前指向元素指向内容:2222

d指针存放结果:0x7ffd33436df0
d指针数组当前指向元素:0x7ffd33436d9c
d指针数组当前指向元素指向内容:2222

p的内存地址为:0x7ffd33436de8 指向元素:2222
q的内存地址为:0x7ffd33436de8

  1.  

个人总结:

1. 数组指针和数组指针 (区分的重点在于括号 [ ] 优先级高于解除引用运算符*)

  1.  
  • 指针数组,是一个包含很多指针的数组,如:

    1. int* b[] = {&m, &n}; //有一个匿名【指针数组】,长度为2,格式为int,每一个元素都是一个指针,访问内容可以使用 *a[0]

    数组指针,是指向数组的指针,如:

    1. int list[] = {m, n};
    2. int (*p)[] = &list; //创建【数组指针】,指向数组list的第一个元素,访问第一个元素用(*p)[0]

2.  关于*,**的理解

  1. int x = ; // 分配一块内存,标记为x,存放1,格式为 int*
  2. int* y = &x; // 分配一块内存,标记为y,存放x的地址,格式为 int*
  3. int** z = &y; // 分配一块内存,标记为z,存放x地址的地址,格式为 int**
  4. int** v = z; // 指针浅拷贝
  5. auto u = &y; // 同第三个,但是格式自动判断,指向关于x的指针y的存放地址

c/c++关于指针的一点理解的更多相关文章

  1. 对C++多态的一点理解

    作为一个C++新手,我浅谈一下我对多态的一点理解. 首先,引用几句话: 1.继承是一种抽象,它允许程序员在某些时候忽略相似对象的差异,又在其他时候利用这些差异.——<C++沉思录> 2.继 ...

  2. 谈谈自己对C语言中函数指针的一些理解 (第一次写博客,有点小兴奋哈)

    1.函数指针声明的格式及简单的使用 (1)格式:(返回值)(*函数指针名)(参数列表)    例如:声明一个无参数无返回值的函数指针(void)(*p)(void). (2)将函数指针指向某个无参数无 ...

  3. opencv笔记5:频域和空域的一点理解

    time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...

  4. 对socket的一点理解笔记

    需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...

  5. LWIP协议中tcp_seg结构相关指针的个人理解

    我曾经写在新浪博客上面,后来复制到这,图片就不行了. 原文地址转载  LWIP协议中tcp_seg结构相关指针的个人理解(http://blog.sina.com.cn/s/blog_7e586985 ...

  6. iOS 的一点理解(一) 代理delegate

    做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...

  7. 关于web开发的一点理解

    对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端   服务端通过解析报文并处理报文最后把处理的结果 ...

  8. angular.js的一点理解

    对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...

  9. RxSwift 入坑好多天 - 终于有了一点理解

    一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...

随机推荐

  1. FTP判断ftp上是否有文件目录,没有就创建的具体案例

    /// <summary> /// 判断ftp上是否有指定的文件目录,没有创建 /// </summary> /// <param name="ftpPath& ...

  2. 关闭VirtualBox虚拟机的时钟同步

    原文链接:关闭VirtualBox虚拟机的时钟同步 在VirtualBox的虚拟机上默认虚拟机的时间是会和物理机同步的,但可以通过下面的命令来关闭 1. 首先查看虚拟机列表 VBoxManage li ...

  3. Confluence 6 "Duplicate Key" 相关问题解决

    如果你遇到了下面的错误信息,例如: could not insert: [bucket.user.propertyset.BucketPropertySetItem#bucket.user.prope ...

  4. MobileNet V2

    https://zhuanlan.zhihu.com/p/33075914 http://blog.csdn.net/u011995719/article/details/79135818 https ...

  5. 用ngif 多次判断 Expression has changed after it was checked

    昨天遇到一个问题 ,用ng Expression has changed after it was checked 查了一下说在angular2中,这个错误只会在dev开发模式下出现,在pro发布版本 ...

  6. SpringAOP面向切面编程

    Spring中三大核心思想之一AOP(面向切面编程): 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的 ...

  7. 图书管理系统(无中间件,用装饰器的)-----未基于FORM组件

    目的:实现图书的增删改查 models.py from django.db import models # Create your models here. class Book(models.Mod ...

  8. 《剑指offer》重建二叉树

    本题来自<剑指offer> 重构二叉树 题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2 ...

  9. linux安装siege

    siege安装笔记 本文介绍centos和ubuntu安装方法 centos安装 下载: [root@ siege-4.0.4]# wget http://download.joedog.org/si ...

  10. python+selenium滑动式验证码解决办法

    from selenium.webdriver import ActionChains action = ActionChains(driver) source=driver.find_element ...