用变量a给出下面的定义

  1. 一个整型数
  2. 一个指向整型数的指针
  3. 一个指向指针的的指针,它指向的指针是指向一个整型数
  4. 一个有10个整型数的数组
  5. 一个有10个指针的数组,该指针是指向一个整型数的
  6. 一个指向有10个整型数数组的指针
  7. 一个指向函数的指针,该函数有一个整型参数并返回一个整型数
  8. 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数

答案是:

 1. int a;2. int *a;3. int **a;4. int a[10];5. int *a[10]; 6. int (*a)[10];7. int (*a)(int);8. int (*a[10])(int);

指针数组、数组指针、指针函数、函数指针本质

指针数组:本质是一个数组,该数组存放的内容是指针变量;

数组指针:本质是一个指针,该指针指向的是一个数组;

指针函数:本质是一个函数,该函数的返回值是一个指针;

函数指针:本质是一个指针,该指针指向的是一个函数;

现在给出int *a[10]int (*a)[10],如何判断哪个是指针数组和数组指针。其实方法很简单,看a和谁先结合,如果和取值运算符(星号)结合,那就表示是指针;如果a和数组下标[]结合,那就表示是数组。

那问题来了,我怎么知道a先和谁先结合?那就看下图的运算符优先级!!!不过只要记住数组下标优先级高于取值运算符。那很明显,

int *a[10]中的a先与数组下标先结合,表示a本质是一个数组,数组元素有10个,数组中的元素都是指向int类型的指针,因此是指针数组。

int (*a)[10]中的a先与取值运算符先结合,表示a本质是一个指针,指针指向一个数组,因此是一个数组指针。

再来一个,int *a(),这是什么?同样的方法,先看a先和谁结合,明显先与()结合,表示a的本质是一个函数,因此是指针函数,表示该函数的返回值是一个指针类型。


本图引用该处,具体可以点击访问完整的优先级列表

指针数组、数组指针、指针函数、函数指针相关推荐

  1. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  2. C++数组名做函数形参/指针

    数组名做函数形参 数组未开辟空间时 #include <iostream> using namespace std; void test(int* a) {*a = 0;*(a+1) = ...

  3. c/c++ 函数、常量、指针和数组的关系梳理

    压力才有动力,15年中旬就要准备实习,学习复习学习复习学习复习学习复习--无限循环中,好记性不如烂笔头--从数组开始,为主干. c 的array由一系列的类型相同的元素构成,数组声明包括数组元素个数和 ...

  4. 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )

    文章目录 一.判定指针合法性 二.数组越界 三.不断修改指针变量值 四.函数中将栈内存数组返回 五.函数间接赋值形参操作 六.指针取值与自增操作 一.判定指针合法性 判定指针合法性时 , 必须进行如下 ...

  5. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  6. 指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序

    指针 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名 ...

  7. c c++ 函数内数组初值_C编程基础-关键字-函数和指针

    C术语的基本定义,例如关键字,标识符,运算符,指针,数据类型,void main(),函数和递归. 在大多数情况下,我们突然无法回答一些简单的问题,例如C中的关键字是什么,C中的标识符是什么,C中的数 ...

  8. 指针数组 数组指针 函数指针 指针函数

    目录 数组指针 指针数组 函数指针 指针函数 数组指针 数组指针的本质: 它是一个指针,指向的是一个数组 数组指针定义: int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一 ...

  9. 【黑马程序员 C++教程从0到1入门编程】【笔记1】数据类型、运算符、程序流程结构、数组、函数、指针、结构体

    黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1.C++初识 1.1 第一个c++程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 2 ...

  10. C++阶段01笔记汇总【C++软件安装、C++初识、数据类型、运算符、程序流程结构、数组、函数、指针、结构体】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 C++课程安排 1 C++初识 1.1 第一个C++程序 1.1.1 创建项目 1.1.2 创建文件 1.1.3 编写代码 1. ...

最新文章

  1. GPU加速库AmgX
  2. R使用热力图(heatmap)可视化数据集
  3. boost::regex模块实现将 C++ 文件转换为语法突出显示的 HTML的测试程序
  4. 判断android图片是否硬解码(方法)
  5. [蓝桥杯]试题 基础练习 Sine之舞
  6. ffmpeg (四):ffmpeg, ffplay, ffprobe用法
  7. 网络基础知识(黑马教程笔记)-6-静态资源访问的功能实现
  8. 全面对比 C C++ Java Python
  9. 一个简单的微信小程序支付demo
  10. 帝国CMS仿3500游戏源码大气H5游戏门户网站模板源码
  11. gprs java_GPRS类型一览
  12. JAVA 抽象类与接口
  13. FFE均衡技术的原理、作用及特点
  14. 与android虚拟机传输文件,android 在本机和虚拟机设备之间复制文件
  15. 手写数字识别问题(5)——完结
  16. 买华为手机U8825D的体验
  17. 认认真真推荐9个高质量公众号
  18. 第二章 Java基本语言
  19. 奋斗吧,程序员——第五十三章 万里赴戎机,关山度若飞
  20. python汇率转换代码_RMB汇率转换

热门文章

  1. 训练dnn_[预训练语言模型专题] MT-DNN(KD) : 预训练、多任务、知识蒸馏的结合
  2. 自行车测速器怎么调_一种自行车测速器及其安装方法与流程
  3. 小米bl未解锁变砖了如何刷机_如何安装MIUI 10
  4. 学计算机的人玩什么游戏,亲戚眼中的大学专业:学的计算机啊,游戏打的肯定贼好吧...
  5. 计算机网络英文题库,强烈推荐计算机网络英文试题库(附答案)chapter.doc
  6. 计算机主机箱拆箱,开箱 篇一:拆戴尔3681 SFF 10代小主机
  7. python开发蠕虫病毒_清除服务器蠕虫病毒
  8. explain分析SQL查询
  9. Ubuntu:查询计算机软硬件信息
  10. 【留言板 Message Board】