c++ 指针数组与指向数组的指针
指针数组与指向数组的指针
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个部分:
- 变量存储数据的类型
- 变量本身的类型(普通变量,指针,引用)
- 变量是否是数组
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++ 指针数组与指向数组的指针的更多相关文章
- 12-返回指针的函数&&指向函数的指针
前言 接下来我只讲指针的最常见用法,比如这一章的内容----返回指针的函数 与 指向函数的指针 一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回 ...
- C++ 中指针常量、指向常量的指针、引用类型的常量
命题1. 在C++ 中 const T a 与 T const a 是一样的, 表示a是一个T类型的常量. 测试: 一. 形参定义为引用类型的常量 在函数传参时,形参若定义为 const T& ...
- 常量指针-指向常量的指针,指针常量-指针本身是常量,常量-不能更改值的常量,数组指针-是指针int (*p)[n] 指针数组-是数组int *p[n]
1.常量指针 定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针. 声明:const int * p; int const * p; 注:可以将一个常 ...
- C++多级指针与多维数组详细介绍
多级指针的概念 多级指针可对应于多维数组,这种指针变量中存的是另一个指针变量的地址,其说明如下: int val=10; int *ptr=&val; int **pptr= ...
- C语言基础复习:字符,字符数组,字符串,字符指针
1. 概述2. 字符2.1 字符定义和大小2.2 字符的输入和输出2.3 字符的计算3. 字符数组3.1 字符数组的定义和大小3.2 字符数组的输入和输出3.3 字符数组的计算4. 字符串4.1 字符 ...
- C语言中指针和多维数组
指针和多维数组 数组名是特殊的指针 数组是一个特殊的指针,多维数组也是更为复杂的数组,它们的关系是什么样的呢? 我们通过一个简单的例子来比较形象的了解指针和多维数组: int a[2][3]; 这是一 ...
- 【C语言】14-返回指针的函数与指向函数的指针
前言 前面我们花了接近3个章节学习指针,应该都感受到指针的强大了吧.指针可以根据地址直接操作内存中的数据,使用得当的话,不仅能使代码量变少,还能优化内存管理.提升程序性能.关于指针的内容还非常多,比如 ...
- 【C语言】-返回指针的函数与指向函数的指针
本文目录 前言 一.返回指针的函数 二.指向函数的指针 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.i ...
- 指针常量&常量指针&指向常量的指针常量
搞不懂不吃晚饭 (1)指针常量 指针常量是一个常量,但是是指针修饰的. 格式:int * const p; 例如 int a, b; int * const p = &a;//指针常量 //分 ...
随机推荐
- 第10组 Alpha冲刺 (6/6)(组长)
1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14008187.html ·作业博客:https://edu.cnblogs.co ...
- Go语言系列- Socket编程和Redis
Socket编程 一.socket编程概述 什么是socket编程? socket编程是计算机PC机器上2个程序通过一个双向的通信连接实现数据的交互,这个连接的一端就是一个socket.socket的 ...
- 学习Java爬虫文档的学习顺序整理
1.认识正则表达式(Java语言基础) https://www.toutiao.com/i6796233686455943693/ 2.正则表达式学习之简单手机号和邮箱练习 https://www.t ...
- 关于Vue中根组件与组件树的理解
在观看了b站的关于Vue3的教学视频后,对Vue的根组件与组件树进行简单的总结下 一.实例化Vue应用 // 此时,app就是一个Vue应用的实例,或者说是一个对象 const app = Vue.c ...
- java 报错: MalformedURLException: unknow protocol: f
问题: java 使用 URL 读取文件解读报错 MalformedURLException 1.使用 URL对象解析文件报错MalformedURLException: unknow protoco ...
- 复盘报告:心跳数据丢失,从发现到解决历经一年多的bug
时间线 大约在2020年10月,内网测试服服务端更新,发现进程A重启后,与其他进程之间的心跳协议不通,不能正常的提供服务.重启后,就正常了. 这个情况持续了很长时间.只在重启时才会出现,且发生概率很低 ...
- 《剑指offer》面试题12. 矩阵中的路径
问题描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该 ...
- 《剑指offer》面试题22. 链表中倒数第k个节点
问题描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...
- 【vps】教你写一个属于自己的随机图API
[vps]教你写一个自己的随机图API 前言 刚刚开始使用halo博客的时候,我就发现halo博客系统是可以使用随机图当背景的,所以也是使用了网上一些比较火的随机图API. 在上次发现了各种图片API ...
- 2022GDUT寒训专题一C题
题目 题面 马在中国象棋以日字形规则移动. 请编写一段程序,给定n×m大小的棋盘,以及马的初始位置 (x, y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. 输入格式 ...