指针数组与指向数组的指针

1、int (*a)[10]-->指向数组的指针

a是一个二级指针,可认为是一个二维数组的首地址,指向一个一维数组,数组存储了10个int数据。

int arr1[10];             // 一维数组
int arr2[2][10]; // 二维数组 int (*a)[10] = arr1&; // a为指向一维数组的指针,arr1&应该替换为&arr1,cblog插件有问题
int (*b)[10] = arr2; // b为指向一维数组的指针
// 指向一维数组(维度为10)的指针,其实是一个二级指针,用来接收二维数组的(二维数组变量名就是一个二级指针)。

2、int *a[10]-->指针数组

a是一个一级指针,是数组的首地址,指向一个int指针数据,数组存了10个int指针

int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int *a[10] = {&arr[0],&arr[1],&arr[2],&arr[3],&arr[4],&arr[5],&arr[6],&arr[7],&arr[8],&arr[9]};
for(int i=0; i<10; ++i) {
cout<<*a[i]<<endl;
}

变量定义分3个部分:

  1. 变量存储数据的类型
  2. 变量本身的类型(普通变量,指针,引用)
  3. 变量是否是数组
int a;
// 第一部分:int,表示变量存储的是int类型数据
// 第二部分:a,表示普通变量
// 第三部分:没有第三部分,说明不是数组
// 三部分组合在一起的含义就是:普通变量,存储的类型是int int *a--->(int*)a;
// 第一部分:int *,表示变量存储的是一个int类型的指针
// 第二部分:a,表示普通变量
// 第三部分:没有第三部分,说明不是数组
// 三部分组合在一起的含义就是:普通变量,存储的类型是int*
// using int_ptr = int *; int *a == int_ptr a; int *a[10]--->(int*)a[10];
// 第一部分:int *,表示变量存储的是一个int类型的指针
// 第二部分:a,表示普通变量
// 第三部分:[10]表示是数组变量
// 三部分组合在一起的含义就是:一个长度为10的数组,存储的类型是int* int (*a)[10];
// 第一部分:int,表示变量存储的是一个int类型的数据
// 第二部分:*a,表示指针变量
// 第三部分:[10]表示是数组变量
// 三部分组合在一起的含义就是:指针变量a指向一个长度为10的数组,数组存储的是int类型数据 int (&a)[10];
// 第一部分:int,表示变量存储的是一个int类型的数据
// 第二部分:&a,表示引用变量
// 第三部分:[10]表示是数组变量
// 三部分组合在一起的含义就是:变量a引用一个长度为10的数组,数组存储的是int类型数据 int *(*a)[10];
// 第一部分:int*,表示变量存储的是一个int类型的数据
// 第二部分:*a,表示指针变量
// 第三部分:[10]表示是数组变量
// 三部分组合在一起的含义就是:指针变量a指向一个长度为10的数组,数组存储的是int*类型数据 int *func();
// 第一部分:int *,表示变量存储的是一个int类型的指针
// 第二部分:func,表示普通变量
// 第三部分:(),表示是函数变量。
// 三部分组合在一起的含义就是:返回指针int*类型的函数
// func是函数 int (*func)();
// 第一部分:int ,表示变量存储的是一个int类型的数据
// 第二部分:*func,表示指针变量
// 第三部分:(),表示是函数变量。
// 三部分组合在一起的含义就是:返回int类型的函数的指针
// func是函数的指针 int *(*func)();
// 第一部分:int* ,表示变量存储的是一个int类型的指针
// 第二部分:*func,表示指针变量
// 第三部分:(),表示是函数变量。
// 三部分组合在一起的含义就是:返回int*类型的函数的指针
// func是函数的指针

c++ 指针数组与指向数组的指针的更多相关文章

  1. 12-返回指针的函数&&指向函数的指针

    前言 接下来我只讲指针的最常见用法,比如这一章的内容----返回指针的函数 与 指向函数的指针   一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回 ...

  2. C++ 中指针常量、指向常量的指针、引用类型的常量

    命题1. 在C++ 中 const T a 与 T const a 是一样的, 表示a是一个T类型的常量. 测试: 一. 形参定义为引用类型的常量 在函数传参时,形参若定义为 const T& ...

  3. 常量指针-指向常量的指针,指针常量-指针本身是常量,常量-不能更改值的常量,数组指针-是指针int (*p)[n] 指针数组-是数组int *p[n]

    1.常量指针 定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针. 声明:const int * p; int const * p; 注:可以将一个常 ...

  4. C++多级指针与多维数组详细介绍

    多级指针的概念 多级指针可对应于多维数组,这种指针变量中存的是另一个指针变量的地址,其说明如下:    int val=10;    int *ptr=&val;    int **pptr= ...

  5. C语言基础复习:字符,字符数组,字符串,字符指针

    1. 概述2. 字符2.1 字符定义和大小2.2 字符的输入和输出2.3 字符的计算3. 字符数组3.1 字符数组的定义和大小3.2 字符数组的输入和输出3.3 字符数组的计算4. 字符串4.1 字符 ...

  6. C语言中指针和多维数组

    指针和多维数组 数组名是特殊的指针 数组是一个特殊的指针,多维数组也是更为复杂的数组,它们的关系是什么样的呢? 我们通过一个简单的例子来比较形象的了解指针和多维数组: int a[2][3]; 这是一 ...

  7. 【C语言】14-返回指针的函数与指向函数的指针

    前言 前面我们花了接近3个章节学习指针,应该都感受到指针的强大了吧.指针可以根据地址直接操作内存中的数据,使用得当的话,不仅能使代码量变少,还能优化内存管理.提升程序性能.关于指针的内容还非常多,比如 ...

  8. 【C语言】-返回指针的函数与指向函数的指针

    本文目录 前言 一.返回指针的函数 二.指向函数的指针 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.i ...

  9. 指针常量&常量指针&指向常量的指针常量

    搞不懂不吃晚饭 (1)指针常量 指针常量是一个常量,但是是指针修饰的. 格式:int * const p; 例如 int a, b; int * const p = &a;//指针常量 //分 ...

随机推荐

  1. 第10组 Alpha冲刺 (6/6)(组长)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14008187.html ·作业博客:https://edu.cnblogs.co ...

  2. Go语言系列- Socket编程和Redis

    Socket编程 一.socket编程概述 什么是socket编程? socket编程是计算机PC机器上2个程序通过一个双向的通信连接实现数据的交互,这个连接的一端就是一个socket.socket的 ...

  3. 学习Java爬虫文档的学习顺序整理

    1.认识正则表达式(Java语言基础) https://www.toutiao.com/i6796233686455943693/ 2.正则表达式学习之简单手机号和邮箱练习 https://www.t ...

  4. 关于Vue中根组件与组件树的理解

    在观看了b站的关于Vue3的教学视频后,对Vue的根组件与组件树进行简单的总结下 一.实例化Vue应用 // 此时,app就是一个Vue应用的实例,或者说是一个对象 const app = Vue.c ...

  5. java 报错: MalformedURLException: unknow protocol: f

    问题: java 使用 URL 读取文件解读报错 MalformedURLException 1.使用 URL对象解析文件报错MalformedURLException: unknow protoco ...

  6. 复盘报告:心跳数据丢失,从发现到解决历经一年多的bug

    时间线 大约在2020年10月,内网测试服服务端更新,发现进程A重启后,与其他进程之间的心跳协议不通,不能正常的提供服务.重启后,就正常了. 这个情况持续了很长时间.只在重启时才会出现,且发生概率很低 ...

  7. 《剑指offer》面试题12. 矩阵中的路径

    问题描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该 ...

  8. 《剑指offer》面试题22. 链表中倒数第k个节点

    问题描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...

  9. 【vps】教你写一个属于自己的随机图API

    [vps]教你写一个自己的随机图API 前言 刚刚开始使用halo博客的时候,我就发现halo博客系统是可以使用随机图当背景的,所以也是使用了网上一些比较火的随机图API. 在上次发现了各种图片API ...

  10. 2022GDUT寒训专题一C题

    题目 题面 马在中国象棋以日字形规则移动. 请编写一段程序,给定n×m大小的棋盘,以及马的初始位置 (x, y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. 输入格式 ...