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;//指针常量 //分 ...
随机推荐
- 曾经大量使用的Model1开发模式,虽不常用,但可以帮我们理解JSP
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6513394762370777604/ 1.<JSP页面实际上就是Servlet> 2.<JSP页 ...
- IE8和IE9下textarea滚动选中的问题
在IE8和IE9下如果textarea设置了样式overflow-y:auto;就不可以滚动选中了,应该样式写成overflow:auto;有了纵向滚动实际上就不会出现横向滚动的情况,也没有必要ove ...
- 乒乓球队比赛,甲队有abc三人,乙队有xyz三人。 抽签得出比赛名单:a不和x比,c不和x,z比, 利用集合求出比赛名单
import java.util.HashMap; import java.util.Map; /** * 乒乓球队比赛,甲队有abc三人,乙队有xyz三人. * 抽签得出比赛名单:a不和x比,c不和 ...
- kafka学习笔记(三)kafka的使用技巧
概述 上一篇随笔主要介绍了kafka的基本使用包括集群参数,生产者基本使用,consumer基本使用,现在来介绍一下kafka的使用技巧. 分区机制 我们在使用 Apache Kafka 生产和消费消 ...
- 数组内sizeof与strlen的区别
1.数组在内存中是连续存放的,地址呈4个字节递增 2.数组的定义需要初始化,否则输出会已随机值输出 3.strlen()和sizeof()之间无关联:strlen():是求字符串长度的----只能针对 ...
- NPOI导出例子
public static string ExportAOrder(ExportData data) { var cellHeard = new Dictionary<string, strin ...
- deepin20搜狗输入法使用
放大打字框 打出中文语句符号
- vue学习10-计算属性
计算属性 1 <!DOCTYPE html> 2 <html lang='en'> 3 <head> 4 <meta charset='UTF-8'> ...
- 【免杀技术】Tomcat内存马-Filter
Tomcat内存马-Filter型 什么是内存马?为什么要有内存马?什么又是Filter型内存马?这些问题在此就不做赘述 Filter加载流程分析 tomcat启动后正常情况下对于Filter的处理过 ...
- ApacheCN 网络安全译文集 20211025 更新
Android 渗透测试学习手册 中文版 第一章 Android 安全入门 第二章 准备实验环境 第三章 Android 应用的逆向和审计 第四章 对 Android 设备进行流量分析 第五章 And ...