C_C++指针经验总结.pdf
### C_C++指针经验总结 #### 前言:复杂类型说明 为了更好地理解和运用指针,本篇文章将深入探讨C/C++中各种复杂的指针类型及其应用场景。指针作为C/C++语言中的一项重要特性,对于程序员来说至关重要。然而,面对一些较为复杂的指针类型定义时,许多开发者可能会感到困惑。因此,在本文档中,我们将通过一系列示例来详细介绍不同类型的指针,并解释它们的实际意义。 #### 指针类型解析方法 理解一个复杂类型的指针,关键在于掌握其解析规则。通常情况下,我们需要从变量名开始,根据运算符的优先级逐步分析。以下是一些基本的指针类型及其解析方式: 1. **简单类型** - `int p;`:这是一个普通的整型变量。 - `int *p;`:从`p`处开始,先与`*`结合,说明`p`是一个指针;然后与`int`结合,说明指针所指向的内容的类型为`int`型。因此,`p`是一个指向整型数据的指针。 - `int p[3];`:从`p`处开始,先与`[]`结合,说明`p`是一个数组;然后与`int`结合,说明数组里的元素是整型的。因此,`p`是一个包含3个整型元素的数组。 - `int *p[3];`:从`p`处开始,先与`[]`结合(优先级高于`*`),说明`p`是一个数组;然后与`*`结合,说明数组里的元素是指针类型;最后与`int`结合,说明这些指针指向的内容是整型的。因此,`p`是一个包含3个指向整型数据的指针的数组。 2. **复杂类型** - `int (*p)[3];`:从`p`处开始,先与`*`结合,说明`p`是一个指针;然后与`[]`结合,说明指针所指向的内容是一个数组;最后与`int`结合,说明数组里的元素是整型的。因此,`p`是一个指向包含3个整型元素的数组的指针。 - `int **p;`:从`p`开始,先与第一个`*`结合,说明`p`是一个指针;然后与第二个`*`结合,说明这个指针所指向的元素是指针类型;最后与`int`结合,说明这些指针指向的内容是整型数据。因此,`p`是一个指向指向整型数据的指针的指针(即双指针)。 - `int p(int);`:从`p`处开始,先与`()`结合,说明`p`是一个函数;然后进入括号内,说明该函数接受一个整型参数;最后与外部的`int`结合,说明函数返回值是一个整型数据。因此,`p`是一个接收整型参数并返回整型值的函数。 - `int (*p)(int);`:从`p`开始,先与`*`结合,说明`p`是一个指针;然后与括号内的`()`结合,说明指针指向的是一个函数;接着与括号内的`int`结合,说明该函数接收一个整型参数;最后与外部的`int`结合,说明函数的返回类型是整型。因此,`p`是一个指向接收整型参数并返回整型值的函数的指针。 - `int *(*p(int))[3];`:从`p`开始,先与括号内的`()`结合,说明`p`是一个函数;然后进入括号内,与`int`结合,说明该函数接受一个整型参数;接着与括号外的`*`结合,说明函数返回的是一个指针;再与`[]`结合,说明这个指针指向的是一个数组;最后与`int`结合,说明数组里的元素是指针类型,这些指针指向的内容是整型数据。因此,`p`是一个接收整型参数并返回一个指向包含3个指向整型数据的指针的数组的指针的函数。 #### 细说指针 接下来,我们将进一步讨论指针的组成部分,以便更好地理解它们的工作原理。 1. **指针的类型** 指针本身的类型指的是指针自身所属的数据类型。例如,在`int *ptr;`中,`ptr`的类型是`int *`。具体来说: - `int *ptr;`:指针的类型是`int *`。 - `char *ptr;`:指针的类型是`char *`。 - `int **ptr;`:指针的类型是`int **`。 - `int (*ptr)[3];`:指针的类型是`int (*)[3]`。 - `int *(*ptr)[4];`:指针的类型是`int *(*)[4]`。 2. **指针所指向的类型** 当通过指针访问其所指向的内存区域时,指针所指向的类型决定了编译器如何解释这片内存区域的内容。例如,在`int *ptr;`中,`ptr`所指向的类型是`int`。具体来说: - `int *ptr;`:指针所指向的类型是`int`。 - `char *ptr;`:指针所指向的类型是`char`。 - `int **ptr;`:指针所指向的类型是`int *`。 - `int (*ptr)[3];`:指针所指向的类型是`int [3]`。 - `int *(*ptr)[4];`:指针所指向的类型是`int *[4]`。 通过以上的介绍,我们可以看出,理解指针的关键在于能够正确地解析出指针的类型以及它所指向的类型。只有掌握了这些基础知识,才能在实际编程中灵活应用指针,提高程序的效率和灵活性。希望本文对您理解和使用C/C++中的指针有所帮助。
































剩余28页未读,继续阅读


- 粉丝: 13
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 某发电工程监理之项目管理概述.doc
- STM32 GUI应用培训:02_STM32_GUI应用软件解决方案详述.pdf
- 内部质量体系审核记录.docx
- 机械制造及其自动化毕业设计论文.doc
- 【Wireless线上课程】Wireless online training_7_ST无线MCU RF测试工具软件使用.
- 大数据时代的高职市场营销专业课程建设.docx
- 灰渣泵检修工艺.doc
- 11_SBSFU在STM32G0上的实现.pdf
- STM32F2摄像头模块(DCMI)介绍.pdf
- 下棋之外-人工智能还会做什么.docx
- 某电力公司市区供电公司继电保护室主任专职行为规范考评表.doc
- 大数据时代下的公益文印.docx
- 【STM32信息安全线上课程】Security online training_5.2.6_STM32U5 SAES E
- STM32 GUI产品介绍_1_STM32图形解决方案_ST_TouchGFX介绍.pdf
- 物联网系列专业课程之单片机与嵌入式.ppt
- 《公路工程经济》培训讲义.doc


