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;//指针常量 //分 ...
随机推荐
- 阿里神器 Seata 实现 TCC模式 解决分布式事务,真香!
今天这篇文章介绍一下Seata如何实现TCC事务模式,文章目录如下: 什么是TCC模式? TCC(Try Confirm Cancel)方案是一种应用层面侵入业务的两阶段提交.是目前最火的一种柔性事务 ...
- Unity3D开发入门教程(三)——添加启动脚本
五邑隐侠,本名关健昌,12年游戏生涯. 本教程以 Unity 3D + VS Code + C# + tolua 为例. 一.启动脚本 第一篇 "搭建开发环境",在 "配 ...
- python中的sort方法和sorted方法
一.sort()函数 描述 sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数. 语法 sort()方法语法: 1 list.sort(cmp=None, key=No ...
- 云计算——实验一 HDFS与MAPREDUCE操作
1.虚拟机集群搭建部署hadoop 利用VMware.centOS-7.Xshell(secureCrt)等软件搭建集群部署hadoop 远程连接工具使用Xshell: HDFS文件操作 2.1 HD ...
- 【经验总结】VSCode中找不到numpy/matplotlib/pillow,navigator没了
在VSCode中写python时,import numpy和matplotlib总是报错找不到模块,用conda list和pip list看到都安装了numpy,前后折腾了很久遇到了好几个问题: 无 ...
- 猪齿鱼 Choerodon 的数据初始化设计解析
数智化效能平台猪齿鱼Choerodon 作为一个微服务框架,需要解决微服务数据初始化本身具有的问题和复杂性,同时也需要满足框架本身特有的数据初始化需求,下面为大家介绍一下这方面的设计思想和实现. 微服 ...
- CentOS7搭建Docker私有仓库----Docker
有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似.目前Docker Registry已经升级到了v2 ...
- LNMP架构搭建
目录 一:LNMP架构简介 1.Nginx与uwsgi 二:django框架+python 1.创建用户 2.安装依赖包 3.安装uwsgi和django 4.测试python 5.创建django项 ...
- 如何保存并复制python虚拟环境
关于虚拟环境的一些基础概念学习了本期视频 保存 以我的一个虚拟环境示例: 在要保存的虚拟环境下使用: pip freeze > requirements.txt 复制 pip install - ...
- spring 异常处理的方式?
一.使用SimpleMappingExceptionResolver解析器 1.1在mvc中进行 配置. <?xml version="1.0" encoding=" ...