C程序设计语言(第二版)
C语言程序设计教程(第二版)第二版ppt课件(完整版)

#include “stdio.h” #include “conio.h” void main( )
{ int num1, num2; printf(“Input the first integer number: ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); scanf(“%d”, &num2); printf(“max = %d\n”, max(num1, num2)); getch(); }
2022/1/12
17
[案例1.2]中的主函数main( ),也可写成如下格式:
……
void main() { int num1, num2; printf(“Input the first integer number: ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); scanf(“%d”, &num2); printf(“max=%d\n”, max(num1, num2)); }
21世纪高职高专新概念教材
• C语言程序设计教程(第二版)
2022/1/12
1
第1章 C语言概述
教学目的: 掌握C语言的程序结构,函数结构,源程 序书写规则,以及TC++3.0的基本操作。 了解C语言的特点和语句。
2022/1/12
2
教学内容: 1.1 发展简史和特点 1.2* 程序结构与函数结构 1.3* 源程序书写规则 1.4 C语言的语句 1.5* TC++3.0基本操作
c程序设计(第二版)

c程序设计(第二版)C程序设计是一门基础而重要的计算机科学课程,它为学习者提供了一种高效、灵活的编程工具。
在《C程序设计(第二版)》这本书中,我们将深入探讨C语言的基本概念、语法结构、编程技巧以及实际应用。
这本书适合初学者和有一定编程基础的读者,旨在帮助他们掌握C语言编程的精髓。
第一章:C语言概述C语言是一种通用的、过程式的编程语言,由Dennis Ritchie在20世纪70年代初期开发。
它以其高效性、灵活性和广泛的应用领域而闻名。
C语言是许多现代编程语言的基石,包括C++、Java和Python等。
第二章:C语言基础本章将介绍C语言的基本元素,包括变量、数据类型、运算符和表达式。
我们还将学习如何编写简单的C程序,包括程序的结构和基本的输入输出操作。
第三章:控制结构控制结构是程序设计中的核心概念之一。
本章将介绍C语言中的三种基本控制结构:顺序结构、选择结构(if语句和switch语句)和循环结构(while循环、do-while循环和for循环)。
第四章:数组数组是存储一系列相同类型数据的集合。
本章将讨论一维数组和二维数组的声明、初始化和操作,以及如何使用数组处理更复杂的数据结构。
第五章:函数函数是C语言中实现代码复用的重要机制。
本章将介绍如何定义函数、调用函数、传递参数以及返回值的使用。
此外,还将讨论递归函数和函数指针的概念。
第六章:指针指针是C语言中一个强大的特性,它允许程序员直接操作内存地址。
本章将解释指针的基本概念,包括指针的声明、指针与数组的关系以及指针在函数中的应用。
第七章:结构体和联合体结构体和联合体是C语言中用于创建复杂数据类型的方式。
本章将介绍如何定义和使用结构体和联合体,以及它们在实际编程中的应用。
第八章:预处理器预处理器是C语言编译过程中的一个阶段,它处理源代码中的宏定义、文件包含和条件编译指令。
本章将讨论预处理器的工作原理和常用指令。
第九章:文件操作文件操作是程序与外部数据交互的重要方式。
C语言程序设计(第2版)

该教材分为12个章节,主要包括程序设计概述,数据及其运算,简单程序设计,分支结构程序设计,循环结 构程序设计,组数,函数,指针,结构体,文件,共用体、枚举和位运算,C++程序设计基础。每一章的开始设 置有“本章导读”和“主要知识点”栏目。“本章导读”既对该章教学内容进行引入,又对该章教学内容进行简 介;“主要知识点”则对该章知识逐项进行罗列说明。每一章节后还设有本章小结与习题等栏目。此外,还包括C 语言的保留字、C语言的运算符两个附录的内容。
成书过程
成书过程
作者秉承“建设精品教材,培养优秀人才”的教育理念,听取和采纳了任课教师的意见,吸收、借鉴其他教 材的长处,融入教学实践经验和教学研究成果,在结构和内容两个方面对第1版进行了全面的调整优化,编写完成 了该教材 。
《C语言程序设计(第2版)》由张磊任主编,冯伟昌、黄忠义、张元国任副主编,魏建国、王桂东、魏军、 高永存、薛莹、徐英娟、徐思杰、潘振昌、王金才、王涛、张文、彭玉忠、马明祥、滕秀荣、李竹健、王凤丽、 曲立杰、刘福香参加了该教材编写工作,全书由张磊统稿和定稿。该教材的编写和出版也得到了相关人员的支 持。
2009年8月22日,该教材由高等教育出版社出版 。
内容简介
c程序设计语言(第2版)

c程序设计语言(第2版)C程序设计语言(第2版)是一本经典的计算机编程教材,由著名的计算机科学家Brian W. Kernighan和Dennis M. Ritchie共同撰写。
这本书首次出版于1978年,第2版于1988年出版。
它通常被简称为K&R,是C语言编程的权威指南,对初学者和有经验的程序员都具有极高的参考价值。
书籍概述这本书全面介绍了C语言的语法、语义和编程技巧。
它不仅涵盖了C语言的基本元素,如变量、运算符、控制结构、函数和数组,还深入探讨了更高级的主题,包括指针、结构、联合、枚举、位操作和预处理器。
第一部分:基础第一部分主要介绍了C语言的基础知识。
它解释了C语言的基本数据类型和运算符,以及如何使用它们来执行基本的算术和逻辑运算。
此外,它还介绍了控制流语句,如if语句、switch语句、while循环和for循环,这些是任何编程语言中实现条件和循环逻辑的基础。
第二部分:函数第二部分专注于函数的定义和使用。
函数是C语言中实现代码重用和模块化的关键。
这部分详细讨论了函数的定义、声明、调用以及如何传递参数。
它还介绍了递归函数的概念,这是一种特殊的函数,它在执行过程中调用自身。
第三部分:指针第三部分深入探讨了指针的概念。
指针是C语言中非常强大的特性,允许程序员直接操作内存地址。
这部分解释了指针的基本概念,包括如何声明指针、指针的算术运算以及指针与数组的关系。
此外,它还介绍了指针在函数参数传递中的应用,以及如何使用指针实现动态内存分配。
第四部分:结构、联合和枚举第四部分介绍了C语言中的复合数据类型,包括结构、联合和枚举。
结构允许将不同类型的数据组合成一个单一的数据类型,联合允许在同一内存位置存储不同的数据类型,而枚举提供了一种定义命名常量的方法。
这部分还讨论了如何使用这些复合类型来创建复杂的数据结构。
第五部分:预处理器和宏第五部分介绍了C语言的预处理器和宏。
预处理器提供了一种在编译之前处理源代码的方法,包括文件包含、条件编译和宏定义。
c程序设计语言第2版

c程序设计语言第2版C程序设计语言第2版是一本经典的计算机编程教材,由著名的计算机科学家Brian W. Kernighan和Dennis M. Ritchie共同编写。
这本书通常被称为K&R,是学习C语言的入门书籍。
在第2版中,作者对第一版的内容进行了更新和扩展,以反映C语言在实际应用中的发展和变化。
第1章:C语言概述本章介绍了C语言的基本概念和特点,包括C语言的发展历史、语法结构、以及与其他编程语言的比较。
此外,还介绍了C语言的编译器和运行环境,为读者提供了一个宏观的认识。
第2章:数据类型、运算符和表达式这一章节详细讲解了C语言中的基本数据类型,如整型、浮点型、字符型等,以及它们在内存中的存储方式。
同时,也介绍了C语言中的各种运算符,包括算术运算符、关系运算符、逻辑运算符等,以及它们的优先级和结合性。
第3章:控制语句控制语句是程序流程控制的基础。
本章介绍了C语言中的三种基本控制结构:顺序结构、选择结构和循环结构。
包括`if`、`switch`、`while`、`for`和`do-while`等语句的使用方式和语法规则。
第4章:函数函数是模块化编程的核心概念。
本章讲述了如何定义和调用函数,参数的传递方式,以及函数的返回类型。
此外,还介绍了递归函数的概念和使用。
第5章:指针指针是C语言中一个非常重要的概念。
本章详细解释了指针的基本概念,包括指针的声明、指针与数组的关系、指针的指针,以及函数指针等高级主题。
第6章:数组数组是存储多个数据项的集合。
本章介绍了一维数组和多维数组的声明和使用,以及如何通过指针来操作数组。
第7章:字符串字符串是字符数组的一种特殊形式。
本章讲解了如何在C语言中处理字符串,包括字符串的声明、初始化、连接、复制等操作,以及常用的字符串处理函数。
第8章:结构体和联合体结构体和联合体是C语言中用于创建复杂数据类型的工具。
本章介绍了如何定义和使用结构体和联合体,以及它们在实际编程中的应用。
C语言程序设计教程第二版

C语言程序设计教程第二版C语言,作为一门高级编程语言,以其高效、灵活和可移植性而广泛应用于系统软件和应用软件的开发。
本教程第二版在第一版的基础上进行了更新和完善,以适应不断变化的编程环境和技术需求。
第一章:C语言概述C语言起源于20世纪70年代,由丹尼斯·里奇在贝尔实验室开发。
它是一种结构化语言,支持过程式编程。
C语言的特点包括简洁的语法、丰富的运算符、灵活的数据结构和强大的控制结构。
第二章:C语言基础本章将介绍C语言的基本语法,包括变量声明、数据类型、运算符和表达式。
同时,将详细讲解基本的输入输出函数,如`printf`和`scanf`。
第三章:控制结构控制结构是程序设计中的核心概念。
本章将深入讲解条件语句(if、switch)、循环语句(for、while、do-while)以及跳转语句(break、continue、return)。
第四章:函数函数是C语言中实现代码复用的重要手段。
本章将介绍函数的定义、声明、调用和参数传递。
此外,还将讨论递归函数和作用域的概念。
第五章:数组和字符串数组是存储固定大小的同类型元素的集合。
字符串可以看作是字符数组。
本章将讲解一维数组、二维数组的使用,以及字符串处理函数,如`strcpy`、`strcat`、`strlen`等。
第六章:指针指针是C语言中非常强大的特性之一。
本章将介绍指针的基本概念、指针与数组的关系、指针运算以及动态内存分配。
第七章:结构体和联合体结构体允许将不同类型的数据组合成一个单一的数据类型。
联合体则允许在相同的内存位置存储不同的数据类型。
本章将讲解如何定义和使用结构体和联合体。
第八章:文件操作文件是程序与外部世界交互的一种方式。
本章将介绍文件的打开、关闭、读取和写入操作,以及文件指针的概念。
第九章:预处理器预处理器提供了条件编译、宏定义和文件包含等功能。
本章将讲解预处理器的指令和使用。
第十章:高级主题本章将探讨C语言中的一些高级主题,包括位操作、内存对齐和函数指针等。
C程序设计语言(第二版)

C程序设计语言(第二版)C程序设计语言(第二版)C程序设计语言是由Brian W. Kernighan和Dennis M. Ritchie合著的一本经典教材,被广泛认为是学习和理解C语言的最好的指南之一。
本文将介绍C程序设计语言(第二版)的重要性、内容概述以及对程序设计学习的影响。
一、C程序设计语言(第二版)的重要性C语言是一种广泛应用于系统软件开发的程序设计语言,而C程序设计语言(第二版)则是C语言学习与应用的经典教材。
这本教材的重要性主要体现在以下几个方面:1. 权威性和广泛性:由C语言的创造者之一Dennis M. Ritchie亲自参与编写,确保了其权威性和准确性。
此外,C语言作为一种通用的、广泛应用的编程语言,使得这本教材具有广泛的适用性。
2. 强调实践与理论相结合:C程序设计语言(第二版)通过大量的实例和案例,既提供了丰富的实践经验,又给予了足够的理论支持。
这种理论与实践相结合的方法,使得读者能够更好地理解和应用C语言。
3. 清晰的表达和详尽的内容:作者们以简洁明了的语言对C语言进行了深入浅出的讲解,既包括基础语法和常用库函数的介绍,也涵盖了高级主题如指针、结构体和位运算等。
这种详尽和全面的内容有助于读者全面掌握C语言的知识。
二、C程序设计语言(第二版)内容概述C程序设计语言(第二版)主要包含了以下几个方面的内容:1. 基础语法和数据类型:从最基本的变量、常量、运算符到流程控制语句如条件语句和循环语句,作者详细介绍了C语言的基础语法和常用的数据类型。
2. 函数和模块化设计:C语言以其强大的函数特性而闻名,本书也详细介绍了函数的定义、调用和参数传递等。
此外,模块化设计的概念和实践也是本书的一个重要内容。
3. 指针和内存管理:由于C语言具有直接访问内存的能力,指针和内存管理是C程序设计中的重要主题。
本书对指针的概念、指针算术和动态内存分配等内容进行了详细探讨。
4. 文件操作和输入输出:对于系统软件开发而言,文件操作和输入输出是必不可少的一部分。
c语言程序设计第二版呼克佑主编pdf

c语言程序设计第二版呼克佑主编pdf 标题:《C语言程序设计第二版呼克佑主编PDF》引言概述:《C语言程序设计第二版》是由呼克佑主编的一本经典的C语言教材,它对C 语言的学习和应用提供了全面的指导。
本文将从六个大点来详细阐述这本教材的内容和特点。
正文内容:1. C语言基础知识1.1 数据类型:介绍了C语言中的基本数据类型,如整型、浮点型、字符型等,并讲解了它们的用途和特点。
1.2 变量和常量:详细解释了C语言中变量和常量的概念,以及它们的声明和使用方法。
1.3 运算符:介绍了C语言中常用的运算符,包括算术运算符、关系运算符、逻辑运算符等,并给出了示例说明。
1.4 控制流程:讲解了C语言中的条件语句(if-else语句)和循环语句(for循环、while循环),以及它们的应用场景。
1.5 函数:详细介绍了C语言中的函数的定义、调用和返回值,以及函数的参数传递方式。
2. 数组和指针2.1 数组:讲解了C语言中数组的概念和用法,包括一维数组和多维数组,并给出了示例说明。
2.2 指针:详细解释了C语言中指针的概念和用法,包括指针的声明、指针的运算和指针与数组的关系。
2.3 动态内存分配:介绍了C语言中动态内存分配的方法,包括malloc()和free()函数的使用。
3. 结构体和共用体3.1 结构体:讲解了C语言中结构体的概念和用法,包括结构体的定义、结构体的成员和结构体的嵌套。
3.2 共用体:详细解释了C语言中共用体的概念和用法,包括共用体的定义、共用体的成员和共用体的应用场景。
4. 文件操作4.1 文件的打开和关闭:介绍了C语言中文件的打开和关闭操作,包括fopen()和fclose()函数的使用。
4.2 文件的读写:详细解释了C语言中文件的读取和写入操作,包括fscanf()、fprintf()等函数的使用。
5. 预处理器和宏定义5.1 预处理器的概念:讲解了C语言中预处理器的作用和使用方法,包括#include指令、#define指令等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章基本概念第二章类型、运算符与表达式一个对象的类型决定着该对象可取值的集合以及可以对该对象施行的运算。
2.2 数据类型与大小1. 在C语言中只有如下几个基本数据类型:char 单字节,可以存放字符集中一个字符。
int 整数,一般反映了宿主机上整数的自然大小。
Float 单精度浮点数。
Double 双精度浮点数。
此外,还有一些可用于限定这些基本类型的限定符。
2.3 常量1.诸如1234一类的整数常量是int常量。
Long常量要以字母l或L结尾。
无符号常量以字母u或U结尾,后缀ul或UL用于表示unsigned long常量。
(这里的常量其实就是指直接指定的一般数字或是字符字符串什么的)浮点常量必须包含一个小数点或指数(如1e-1)或两者都包含,在没有后缀时类型为double。
后缀f与F用于指定float常量,而后缀l或L则用于指定字符常量是一个整数,写成用单引号括住单个字符的形式,如‘x’。
字符常量的值是该字符在机器字符集中的数值。
常量表达式时其中只涉及到常量的表达式。
这种表达式可以在编译时计算而不必推迟到运算时,因而可以用在常量可以出现的任何位置,例如由define定义的宏。
字符串常量也叫字符串字面值,是用双引号括住的由0个或多个字符组成的字符序列。
从技术绝度看,字符串常量就是字符数组。
在内部表示字符串时要用一个空字符’\0’来结尾,故用于存储字符串的物理存储单元数比括在双引号中的字符数多一个。
这种表示发意味着,C语言对字符串的长度没有限制,但是程序必须扫描完整个字符串才能决定这个字符串的长度。
枚举常量。
枚举是常量整数值的列表。
不同的枚举中的名字必须各不相同,同一枚举中各个名字的值不要求不同。
枚举是使常量值与名字相关联的又一种方便的方法,其相对于#define语句的优势是常量值可以由自己控制。
2.4 说明其实就是声明。
如果所涉及的变量不是自动变量(就是局部变量),那么只初始化一次,而且从概念上讲应该在程序开始执行之前进行,此时要求初始化符必须为常量表达式。
显示初始化的自动变量每当进入其所在的函数或分程序时就进行一次初始化,其初始化符可以是任何表达式。
外部变量与静态变量的缺省值为0。
未经显式初始化的自动变量的值为未定义值(即垃圾)。
2.5 算术运算符2.6 关系运算符与逻辑运算符2.7 类型转换1. 当一个运算符的几个运算分量的类型不同时,要根据一些规则把它们转换成某个共同的类型。
一般而言,只能把“比较窄的”运算分量自动转换成“比较宽的”运算分量,这样才能不丢失信息。
2. char类型就是小整数类型,在算术表达式中可以自由地使用char类型的变量或常量。
这就使得在某些字符转换中有了很大的灵活性。
但是在将字符转换成整数时有一点微妙。
C 语言没有指定char类型变量时无符号还是有符号量。
当把一个char类型的值转换成int类型的值时,其结果是不是负整数?结果视机器的不同而有所变化,反映了不同机器结构之间的区别。
在某些机器上,如果字符的最左一位为1,那么就被转换成负整数。
在另一些机器上,采取的是提升的方法,通过在最左边加上0把字符提升为整数,这样的转换结果总是正的。
C语言的定义保证了机器的标准可打印字符集中的字符不会是负的,故在表达式中这些字符总是正的。
但是,字符变量存储的位模式在某些机器上可能是负的,而在另一些机器上却是正的。
为了保证程序的可移植性,如果要在char变量中存储非字符数据,那么最好指定signed或unsigned限定符。
3. 当表达式中包含unsigned类型的运算分量时,转换规则要复杂一些。
主要问题是,在有符号与无符号值之间的比较运算取决于机器,因为它们取决于各个整数类型的大小。
例如,假定int对象占16位,long对象占32位,那么,-1L<1U,这是因为int类型的-1U被提升为signed long类型;但是-1L>1UL,这是因为-1L被提升为unsinged long类型,因此它是一个比较大的正数。
4. 在进行赋值时要进行类型转换,=右边的值要转换成左边变量的类型,后者即赋值表达式结果的类型。
不管是否要进行符号扩展,字符值都要转换成整数值。
当把较长的整型数转换成较短的整型数或字符时,要把超出的高位部分截掉。
5. 由于函数调用的变元是表达式,当把变元传递给函数时也可能引起类型转换。
在没有函数原型的情况下,char与short类型转换为int类型,float转换为double型,这就是即使在函数使用char与float类型的变元表达式调用时仍把参数说明成int与float的原因。
2.8 加一与减一运算符2.9 按位运算符2.10 赋值运算符与赋值表达式2.11 条件表达式2.12 运算符优先级与表达式求值次序同一行的各个运算符具有相同的优先级,纵向看越往下优先级越低。
第三章控制流第四章函数与程序结构4.1 函数的基本知识1. 程序是变量定义和函数定义的结合。
函数之间的通信可以通过变元、函数返回值以及外部变量进行。
函数可以以任意次序出现在原文件中。
源程序可以分成多个文件,只要不把一个函数分在几个文件中就行。
4.3 外部变量1.C程序由一组外部对象(外部变量或函数)组成。
外部变量在函数外面定义,故可以在很多函数中使用。
由于C语言不允许在一个函数中定义其他函数,因此函数本身是外部的。
在缺省情况下,外部变量与函数具有如下性质:所有通过名字对外部变量与函数的引用都是引用的同一对象。
4.4 作用域规则4.5 头文件4.6 静态变量1. static说明适用于外部变量与函数,用于把这些对象的作用域限定为被编译源文件的剩余部分。
2. 外部static说明最常用于说明变量,当然它也可以用于说明函数。
通常情况下,函数名字是全局的,在整个程序的各个部分都可见。
然而,如果把一个函数说明称静态的,那么该函数名字就不能用在除该函数说明所在的文件之外的其他文件中。
Static说明也可用于说明内部变量。
内部静态变量就像自动变量一样局部于某一特定函数,只能在该函数中使用,但与自动变量不同的是,不管其所在函数是否被调用,它都一直是存在的,而不像自动变量那样,随着所在函数的调用与退出而存在与消失。
4.7 寄存器变量Register说明用于提醒编译程序所说明的变量在程序中使用频率较高。
其思想是,将寄存器变量放在机器的寄存器中,这样可以是程序更小、执行速度更快。
但编译器可以忽略此选项。
寄存器说明只适用于自动变量以及函数的形式参数。
所有寄存器变量的地址都是不能访问的。
4.9 初始化1.在没有显示初始化的情况下,外部变量与静态变量都被初始化为0,而自动变量与寄存器变量的初值则没有定义(即,其初值是“垃圾”)。
4.10 递归4.11 C预处理程序第五章指针与数组5.1 指针与地址1.取地址运算符&只能应用于内存中的对象(即变量与数组元素),它不能对表达式、常量或寄存器变量进行操作。
5.3 指针与数组1.数组下标所能完成的任何运算都可以用指针来实现。
一般而言,指针运算比数组下标运算的速度快。
在对数组进行下标运算,即求a[i]的值时,C语言实际上是先将其转化成*(a+i)的形式然后再进行求值,因而在程序中这两种形式等价。
2.必须注意到,数组名字和指针之间仍然存在着一点区别。
指针是变量,因而在C语言中,语句pa=a和pa++都是合法的。
但是数组名字不是变量,因而诸如a=pa(这个是指对整个数组从一个到另一个的整体赋值)和a++(这是指对数组名执行自加运算,其实可以运用a+i的形式,不知为啥a++不行)这样的语句是非法的。
3.当把一个数组名字传递给一个函数时,实际上传递的是该数组第一个元素的位置。
也可以通过传递指向子数组的指针的方法把数组的一部分作为参数传递给函数。
例如f(&a[2])。
5.4 地址算术运算1.有效的指针运算包括:相同类型指针之间的赋值运算;指针值加或减一个整数值的运算;指向相同数组中的元素的指针之间的减或比较运算;将指针赋0或指针与0之间的比较运算。
所有其他形式的指针运算均非法,诸如下列形式的运算就是非法的指针运算:指针间的加法、乘法、除法或屏蔽运算;指针值加单双精度浮点数的运算;除两者之一是void*类型指针外,不经强制类型转换就将指向一种类型对象的指针赋给指向另一种类型对象的指针的运算。
5.5 字符指针与函数char amessage[] = “now is the time”; /*定义一个数组*/char *pmessage = “now is the time”; /*定义一个指针*/上述说明中,amessage是一个不可改变的常量,它总指向同一片存储区。
另一方面,pmessage是一个指针,其初值指向一个字符串常量,之后它可以被修改指向其他地址,但是如果试图修改字符串的内容,结果将不确定。
5.6 指针数组与指向指针的指针1. 例如定义char *line[20],那么请注意,这时首先根据运算符优先级规则,line是一个数组,又由于有*的修饰,所以他是一个指针数组,即数组里面存储的全部是指针。
5.7 多维数组1.数组在内存中按行存储。
如果要将二维数组作为变元传递给函数,那么函数的参数说明中应该指明相应数组的列数,数组的行数不必指定。
5.9 指针与多维数组注意int a[10][20];int *b[10];这两个的区别,对于b来说,每一维的长度可以不一致。
5.10 命令行变元5.11 指向函数的指针1.在C语言中,函数本身不是变量,但可以定义指向函数的指针,这种指针可以被赋值、存放于数组中、传递给函数及作为函数返回值等等。
2.定义指向函数的指针:return_type (*fun_name) (参数列表);调用则为(*fun_name)(实参);5.12 复杂说明1. 见定义:char **argv; argv:指向字符指针的指针int (*daytab) [13]; daytab:指向由13个整形类型元素组成的一维数组的指针(这就是数组指针,指向数组的指针。
就是一指针)。
(这里这么用,int nArray[3] = {1, 2, 3};int (*pArray)[3] = &nArray;)int *daytab[13]; daytab:由13个指向整数类型对象的指针组成的一维数组(存储的是13个指针)。
void *comp(); comp:返回值为指向通用类型的指针的函数。
void (*comp)(); comp:指向返回值为通用类型的函数的指针。
char (*(*X())[])(); X:返回值为指向一维数组的指针的函数,该一维数组由指向返回字符类型的函数指针组成。
char (*(*X[3])()) [5]; X:由3个指向函数的指针组成的一维数组,该函数返回指向由5个字符组成的一维数组的指针。