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;//指针常量 //分 ...
随机推荐
- Go语言中各种数据格式转换
Go语言各种数据类型格式转换 package main import ( "encoding/json" "fmt" "reflect" & ...
- Maven+ajax+SSM实现编辑修改
转载自:https://www.cnblogs.com/kebibuluan/p/9017754.html 3.尚硅谷_SSM高级整合_使用ajax操作实现修改员工的功能 当我们点击编辑案例的时候,我 ...
- Java CAS 原理详解
1. 背景 在JDK 5之前Java语言是靠 synchronized 关键字保证同步的,这会导致有锁.锁机制存在以下问题: 在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度延时,引起性能问 ...
- CSS相关知识及入门
CSS(层叠样式表) 作用 修饰HTML页面,美化 CSS代码规范 放置规范 在<style>标签内容体中书写样式代码 <style>标签放置在<head>标签内. ...
- Sentry 开发者贡献指南 - Feature Flag
功能 flag 在 Sentry 的代码库中声明. 对于自托管用户,这些标志然后通过 sentry.conf.py 进行配置. 对于 Sentry 的 SaaS 部署,Flagr 用于在生产中配置标志 ...
- Cesium入门7 - Adding Terrain - 添加地形
Cesium入门7 - Adding Terrain - 添加地形 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com ...
- AOP操作-AspectJ注解
AOP操作(AspectJ注解) 1,创建类,在类里面定义方法 2,创建增强类(编写增强逻辑) (1)在增强类里面,创建方法,让不同方法代表不同通知类型 3,进行通知的配置 (1)在spring配置文 ...
- python 模块Module
一.模块 1.定义: 模块是一个python文件,以.py结尾,包含了python对象定义和python语句. 2.作用: 模块内可以定义函数.类和变量: 模块可以提高代码的可维护性和重复使用: 让代 ...
- Hbase 项目
需求分析 1) 微博内容的浏览,数据库表设计 2) 用户社交体现:关注用户,取关用户 3) 拉取关注的人的微博内容 表结构 代码实现 1) 创建命名空间以及表名的定义 2) 创建微博内容表 3) 创 ...
- CKKS Part4: CKKS的乘法和重线性化
本文翻译于CKKS EXPLAINED, PART 4: MULTIPLICATION AND RELINEARIZATION,主要介绍CKKS方案中的密文乘法和重线性化技术 介绍 在上一篇 CKKS ...