`
guoyiqi
  • 浏览: 1042425 次
社区版块
存档分类
最新评论

(0)让你不再害怕指针--复杂类型说明

 
阅读更多

要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:

从变量名处起,根据运算符优先级结合,一步一步分析.

下面让我们先从简单的类型开始慢慢分析吧:

int p; //这是一个普通的整型变量

int *p; //首先从P 处开始,先与*结合,所以说明P 是一个指针,然后再与int 结合,说明指针所指向的内容的类型为int 型.所以P 是一个返回整型数据的指针

int p[3]; //首先从P 处开始,先与[]结合,说明P 是一个数组,然后与int 结合,说明数组里的元素是整型的,所以P 是一个由整型数据组成的数组

int *p[3]; //首先从P 处开始,先与[]结合,因为其优先级比*高,所以P 是一个数组,然后再与*结合,说明数组里的元素是指针类型,然后再与int 结合,说明指针所指向的内容的类型是整型的,所以P 是一个由返回整型数据的指针所组成的数组

int (*p)[3]; //首先从P 处开始,先与*结合,说明P是一个指针然后再与[]结合(与"()"这步可以忽略,只是为了改变优先级),说明指针所指向的内容是一个数组,然后再与int 结合,说明数组里的元素是整型的.所以P 是一个指向由整型数据组成的数组的指针

int **p; //首先从P 开始,先与*结合,说是P 是一个指针,然后再与*结合,说明指针所指向的元素是指针,然后再与int 结合,说明该指针所指向的元素是整型数据.由于二级指针以及更高级的指针极少用在复杂的类型中,所以后面更复杂的类型我们就不考虑多级指针了,最多只考虑一级指针.

int p(int); //从P 处起,先与()结合,说明P 是一个函数,然后进入()里分析,说明该函数有一个整型变量的参数然后再与外面的int 结合,说明函数的返回值是一个整型数据

int (*p)(int); //从P 处开始,先与指针结合,说明P 是一个指针,然后与()结合,说明指针指向的是一个函数,然后再与()里的int 结合,说明函数有一个int 型的参数,再与最外层的int 结合,说明函数的返回类型是整型,所以P 是一个指向有一个整型参数且返回类型为整型的函数的指针

int *(*p(int))[3]; //可以先跳过,不看这个类型,过于复杂.从P 开始,先与()结合,说明P 是一个函数,然后进入()里面,与int 结合,说明函数有一个整型变量参数,然后再与外面的*结合,说明函数返回的是一个指针,,然后到最外面一层,先与[]结合,说明返回的指针指向的是一个数组,然后再与*结合,说明数组里的元素是指针,然后再与int 结合,说明指针指向的内容是整型数据.所以P 是一个参数为一个整数据且返回一个指向由整型指针变量组成的数组的指针变量的函数.

说到这里也就差不多了,我们的任务也就这么多,理解了这几个类型,其它的类型对我们来说也是小菜了,不过我们一般不会用太复杂的类型,那样会大大减小程序的可读性,请慎用,这上面的几种类型已经足够我们用了.(难道就这么结束了?当然不是,我会陆续把下面的讲完)


请继续学习1.让你不再害怕指针--细说指针

分享到:
评论

相关推荐

    让你不再害怕指针-C语言

    在实际编程中,尽管多级指针和复杂类型可以实现一些高级功能,但为了保持代码的清晰性和可读性,通常应避免过度使用。理解并熟练运用指针是成为C语言高手的关键步骤,希望本文能帮助你克服对指针的恐惧,进一步提升...

    让你不再害怕指针

    ### 让你不再害怕指针 #### 前言:复杂类型说明 为了更好地理解和掌握指针的概念,本文将从简单类型入手,逐步过渡到较为复杂的类型,帮助读者全面掌握C语言中的指针机制。 #### 理解复杂类型的规则 在C语言中,...

    让你不再害怕指针(完整版)

    从标题“让你不再害怕指针(完整版)”和描述“本书系统讲解了指针的用法,帮助大家更好的理解指针。让大家学会灵活的使用指针解决问题。”可以推断,这本书会详细介绍指针的各个方面,包括它们的声明、使用、以及如何...

    让你不再害怕指针(c中指针的详解)

    ### 指针详解:不再畏惧C语言中的指针 #### 前言:理解复杂类型 在深入了解指针之前,我们首先需要掌握如何解析较为复杂的类型声明。这对于理解指针至关重要,因为指针本身的定义可能包含多个层级的复杂度。 ####...

    指针经验总结-让你不再害怕指针

    前言:复杂类型说明 \ 1、细说指针 要了解指针,多多少少会出现一些比较复杂的类型,如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和...

    指针总结-让你不再害怕指针

    虽然多级指针和复杂类型可以实现更高级的功能,但它们也会增加理解和调试的难度。通常,一级指针就足以应对大多数情况。 总的来说,理解和掌握指针的关键在于熟悉运算符的优先级,理解指针的类型和所指向的类型,...

    C++指针应用教学:让你不再害怕指针

    ### C++指针应用教学:让你不再害怕指针 #### 前言:复杂类型说明 在编程领域,特别是对于C++这样的强类型语言而言,理解指针的概念及其使用方式至关重要。指针作为C++中一种特殊的变量类型,能够直接操作内存地址...

    c/c++指针总结··让你不再害怕指针

    ### C/C++ 指针总结 —— 让你不再害怕指针 #### 前言:复杂类型说明 为了更好地理解和使用C/C++中的指针,本篇内容将逐步介绍如何解读各种复杂的指针类型,并通过实际示例加深理解。在开始之前,我们需要明白一点...

    给你不再害怕指针的理由

    ### 给你不再害怕指针的理由 #### 前言:理解复杂的类型声明 要真正掌握C或C++语言中的指针,理解复杂的类型声明至关重要。指针是这两种语言中最强大的特性之一,能够灵活地控制内存,从而提高程序的效率和性能。...

    大神教你不再害怕C语言指针

    "大神教你不再害怕C语言指针" 本文将详细介绍C语言指针的知识点,旨在帮助读者彻底理解指针的概念和用法。 首先,让我们从基本的类型开始。假设我们有一个变量`int p;`,这是一个普通的整型变量。接下来,我们有一...

    C++ Best Practices

    13. 在许多情况下,更倾向于使用auto - auto类型推导让代码更简洁,减少冗余,提高可读性。 14. 倾向于使用范围for循环语法而不是旧循环 - 范围for循环使代码更简洁,易于阅读。 15. 使用算法而不是循环 - 标准库...

    C语言入门经典(第4版)--源代码及课后练习答案

    2.9 较复杂的表达式 41 2.10 定义常量 44 2.10.1 极限值 46 2.10.2 sizeof运算符 49 2.11 选择正确的类型 50 2.12 强制类型转换 53 2.12.1 自动转换类型 53 2.12.2 隐式类型转换的规则 54 2.12.3 赋值语句...

    实验二 链表基本操作的实现

    例如,在C/C++中,你需要声明结构体来定义节点,并用指针变量来引用节点;在Python中,链表节点可以通过类实现,节点的下一个节点通过对象引用表示。 通过实践这些操作,你将加深对链表工作原理的理解,并能灵活...

    C++入门经典代码!!!

    4. **数组与指针**:数组是相同类型的元素集合,指针则是存储内存地址的变量,它们在处理大量数据时非常有用。 5. **类与对象**:面向对象编程的基础,类定义了对象的属性和行为,对象是类的实例。 6. **继承与...

    C语言初学者很好的学习资料

    数组是相同数据类型的元素集合,而指针则是存储内存地址的变量,它们在C语言中起着至关重要的作用,因为指针允许直接操作内存,使得程序更加灵活和高效。 接下来,我们来谈谈源代码的学习。源代码是程序员用C语言...

Global site tag (gtag.js) - Google Analytics