//数组名是常量指针,
//a指向数组首元素,指针步长为数组元素大小,&a同样也指向数组首地址,指针步长为数组大小,如下: //a+1 是相对数组起始地址偏移了sizeof(int)字节
//&a+1 是相对于数组起始地址偏移了sizeof(a)字节
int a[] = { , , , };
cout << *a << *(a + ) << *(a + ) << *(a + ) << endl; // cout << a << " " << &a << endl; //两地址相同
cout << &a + << "," << &a + << endl; //0048FBB8,0048FBC8,刚好差了16字节 auto ta = a; //这个方式有趣,只能用这种方式原样使用数组
cout << ta[] << ta[] << ta[] << ta[] << endl; //1324 //向上取址,正确方式
int b = ;
int* p = &b;
int** pp = &p; //
int*** ppp = &pp;
int**** pppp = &ppp; //向上取址,错误方式
int** ppt = &(&b); //&b是常量地址,&(&b)是对常量取址,错误行为,只有变量能取址 //定义一个指向 int[4]类型的指针pa,注意,数组元素个数必须相等,不能是 int(*pa)[2] = &a;
int(*pa)[] = &a; //同理,可以先定义一个int (*)[4]类型,再用它定义变量
typedef int(*Arr4Ptr)[]; //声明类型
Arr4Ptr px = &a; //定义变量 //数组内存是连续的吗?
//答案:数组的一级元素在内存中都是连续存放的,示例如下: int iarr1[]; //内存连续
int iarr2[]; //内存连续
int iarr3[]; //内存连续
float farr[]; //内存连续 int* arrptrs[]; arrptrs[] = iarr1;;
arrptrs[] = iarr2;
arrptrs[] = iarr3; //一级元素共3个,每个都是类型为 int*的指针,它们在内存中是连续存放的:
//002CF994,002CF998,002CF99C
cout << &(arrptrs[]) << "," << &(arrptrs[]) << "," << &(arrptrs[]) << endl; //二级元素iarr1,iarr2, iarr3明显是不连续存放的,因为它们是三个不相关的普通变量
cout << iarr1 << "," << iarr2 << "," << iarr3 << endl;

参考:https://www.cnblogs.com/nosadness/p/4369937.html

C++数组与指针回顾总结的更多相关文章

  1. Primer回顾 数组和指针

    数组和指针类似于vector和迭代器. 区别在于:数组的长度是固定的.数组一经创建,就不允许添加新的元素.指针则可以像迭代器一样用于遍历和检查数组中的元素. 设计良好的程序只有在强调速度时才在类实现的 ...

  2. 数组与指针的区别,以及在STL中传递数组/指针

    数组和指针在作为实参传入T[] 或T*的形参时没有区别 void f(int pi[]) { cout << sizeof(pi) << endl; } int a[5] = ...

  3. C语言数组与指针总结

    寒假要开始猛刷<剑指offer>,先回顾一下C语言基础做个热身. 指针 相信大家对下面的代码不陌生: ; int *p; p=&i; 这是最简单的指针应用,也是最基本的用法.再来熟 ...

  4. 把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另 ...

  5. C语言核心之数组和指针详解

    指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而 ...

  6. 《征服 C 指针》摘录3:数组 与 指针

    一.数组 和 指针 的微妙关系 数组 是指将固定个数.相同类型的变量排列起来的对象. 正如之前说明的那样,给指针加 N,指针前进“当前指针指向的变量类型的长度 X N”. 因此,给指向数组的某个元素的 ...

  7. C指针-数组和指针的归一

    int bArr[] = {1,2,3}; int *iarr = bArr; *iarr = 6; printf("%d\n",*iarr); printf("%d\n ...

  8. 《C专家编程》第四章——令人震惊的事实:数组和指针并不相同

    数组和指针是C语言里相当重要的两部分内容,也是新手程序员最容易搞混的两个地方,本章我们锁定指针与数组,探讨它们的异同点. 首先来看指针与数组在声明上的区别: int a[10]; int *p; 很明 ...

  9. (C语言)数组与指针的区别

    以前常常听过这种说法,说数组和指针这两者比较像,但是不能混淆,可是一直没能理解.刚刚在李云的<专业嵌入式软件开发>中,看了讲述数组与指针区别的一章,似乎有所领悟.本着知乎上看到的这张图,我 ...

随机推荐

  1. String、StringBuffer、StringBuilder分析(jdk8)

    以下代码只挑选了关键方法进行分析 public final class String //String类不可继承,实现了序列化 implements java.io.Serializable, Com ...

  2. DRF 的 版本,解析器,与序列化

    DRF 的 版本,解析器,与序列化 补充 配置文件中的 类的调用: (字符串) v1 = ["view.xx.apth.Role","view.xx.apth.Role& ...

  3. C++中const指针用法汇总

    这里以int类型为例,进行说明,在C++中const是类型修饰符: int a; 定义一个普通的int类型变量a,可对此变量的值进行修改. const int a = 3;与 int const a ...

  4. mac brew安装使用卸载

    (一)安装 1.浏览器打开brew.sh,进入homebrew主页.找到install homebrew 的命令: /usr/bin/ruby -e "$(curl -fsSL https: ...

  5. git clone all branch and create a empty branch

    /******************************************************************** * git clone all branch and cre ...

  6. Android WebView remote debugging

    /***************************************************************************** * Android WebView rem ...

  7. linux ls-al 指令详解

    ls -al 具体说明请自行找男人(man 中了鸟哥的毒 =.=).

  8. 【ES6】蛋疼

  9. 【Android】Android 学习记录贴

    官网 教程学习笔记 Genymotion 安卓虚拟器太慢,用Genymotion(装载eclipse的插件) 利用Genymotion运行Android应用程序 1.首先,点击 来启动或者创建您要使用 ...

  10. python函数返回值

    2016-08-09  15:01:38 python函数返回值使用return语句,可以返回任意类型的数.如果return语句执行,它之后的所有语句都不再执行. def func(x,y): pri ...