`
kmplayer
  • 浏览: 496993 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第三章 分析C语言的声明

阅读更多
1,
int( *fun() )():fun是一个函数,返回一个指针,指针指向一个int ()类型的函数.
int( *fun())[]:fun是一个函数,返回一个指针,指针指向一个元素为int类型的数组.
int( *fun[] )():fun是一个数组,数组元素是指针,指针指向一个int ()类型的函数.

2,关于联合:
(1)可以通过把两个相互排斥的字段存储于联合中来节省空间.
(2)联合可以把同一种数据解释成两种不同的东西.如:
#include<stdio.h>

union bit_32
{
    int whole;
    char byte[4];
} value;

int main()
{
    value.whole=0x11223344;
    printf("%x\n",value.whole);
    printf("%x\n",value.byte[0]);
    return 0;
}

3,关于枚举:
把一串名字与一串整数值联系在一起.
缺省情况下,整数值从零开始,如果对某个标识符进行了赋值,那么紧接其后的那个标识符的值加1.
枚举的优点:#define定义的名字会在编译时丢弃,而枚举会一直在调试器中出现.
#include<stdio.h>

enum sizes{nu, small=3,medium,large=8,humungous};

int main()
{
    printf("%d\n",nu);
    printf("%d\n",small);
    printf("%d\n",medium);
    printf("%d\n",large);
    printf("%d\n",humungous);
    return 0;
}


4,c语言声明的优先级规则:例如 char* const *(*next)()
(1)从它的名字开始: next
(2)被括号括起来的部分:(*next),next是一个指针
(3)后缀操作符:()表示一个函数,[]表示一个数组
(*next)():next是一个指针,指向一个函数.
(4)前缀操作符:*(*next)(),函数返回一个指针.
(5)char* const *(*next)():函数返回的指针指向类型为char的常量指针.

5,巧用typedef
void (*signal(int sig, void(*func)(int)))(int);
typedef void(*pro_to_func)(int);
上述可以简化为:
pro_to_func signal(int,pro_to_func);

6,typedef 和 define的区别:
(1)#define peach int
unsigned peach i;//没有问题
typedif int banana;
unsigned banana i;//错误,非法

(2)#define int_ptr int *;
int_ptr a,b; 扩展为int * a,b;
//a为int*类型,b为int类型
typedef int * int_ptr;
int_ptr a,b;
//a,b均为int*类型.

建议:不要为了方便对结构体使用typedef,这样做的好处只是省略了关键字struct.

分享到:
评论

相关推荐

    C语言声明学习之中级篇

    (如果你对此还有疑惑的话,建议你去读一读《C编程》的第三章:“分析C语言的声明”)  对于这样一个声明,我们应该如何分析?  ——————int f()[];  首先,f是一个函数,其次,它的返回值是一个整型数组...

    C语言解析教程(原书第4版)(美) 凯利.pdf

    第3章 基本数据类型 3.1 声明、表达式和赋值 3.2 基本数据类型 3.3 字符和char数据类型 3.4 int数据类型 3.5 整数类型short、long和unsigned 3.6 浮点类型 3.7 typedef的用法 3.8 sizeof操作符 3.9 使用getchar()...

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

    第3章 条件判断 79 3.1 判断过程 79 3.1.1 算术比较 80 3.1.2 涉及关系运算符的表达式 80 3.1.3 基本的if语句 81 3.1.4 扩展if语句:if-else 84 3.1.5 在if语句中使用代码块 86 3.1.6 嵌套的if语句 87 3.1.7...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    第3章 程序设计初步 3.1 面向过程的程序设计和算法 3.1.1 算法的概念 3.1.2 算法的表示 3.2 C++程序和语句 3.3 赋值语句 3.4 C++的输入与输出 *3.4.1 输入流与输出流的基本操作 *3.4.2 在输入流与输出流中使用...

    新概念C语言.李一波(带详细书签).pdf

    第3章 顺序结构程序 16 3.1 复合语句和空语句 16 3.1.1 复合语句 16 3.1.2 空语句 16 3.2 程序举例 16 习题 17 第4章 选择结构 19 4.1 关系运算和逻辑运算 19 4.1.1 C语言中的逻辑值 19 4.1.2 关系运算符和...

    《你必须知道的495个C语言问题》

    第3章 表达式 33 求值顺序 33 3.1 为什么这样的代码不行?a[i]= i++; 33 3.2 使用我的编译器,下面的代码int i= 7; printf("%d\n", i++ * i++); 打印出49。不管按什么顺序计算,难道不该是56吗? 33  3.3 ...

    你必须知道的495个C语言问题

    第3章 表达式 求值顺序 3.1 为什么这样的代码不行?a[i]=i++; 3.2 使用我的编译器,下面的代码inti=7;printf("%d\n",i++*i++);打印出49。不管按什么顺序计算,难道不该是56吗? 3.3 对于代码inti=3;i=i++;...

    《C语言高级编程与实例剖析》源码

    第3章 文件高级操作 68 3.1 文件的基本概念 68 3.2 标准文件的输入输出操作 68 3.2.1 标准文件输入输出 70 3.2.2 标准文件打开函数fopen() 71 3.2.3 标准文件关闭函数fclose() 74 3.2.4 标准文件...

    美国..现代编译原理C语言描述.高清版

    第3章 语法分析 27 3.1 上下文无关文法 28 3.1.1 推导 29 3.1.2 语法分析树 29 3.1.3 二义性文法 30 3.1.4 文件结束符 31 3.2 预测分析 32 3.2.1 FIRST集合和FOLLOW集合 33 3.2.2 构造一个预测分析器 35 3.2.3 消除...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    第3章 程序设计初步 3.1 面向过程的程序设计和算法 3.1.1 算法的概念 3.1.2 算法的表示 3.2 C++程序和语句 3.3 赋值语句 3.4 C++的输入与输出 *3.4.1 输入流与输出流的基本操作 *3.4.2 在输入流与输出流中使用...

    C程序设计 第四版 谭浩强 高清扫描版 带完整书签目录 加 学习辅导

    第3章 最简单的C程序设计——顺序程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.2.1 常量和变量 3.2.2 数据类型 3.2.3 整型数据 3.2.4 字符型数据 3.2.5 浮点型数据 3.2.6 怎样确定常量的类型 3.2.7 ...

    宋劲彬的嵌入式C语言一站式编程

    3. 算法的时间复杂度分析 4. 归并排序 5. 线性查找 6. 折半查找 12. 栈与队列 1. 数据结构的概念 2. 堆栈 3. 深度优先搜索 4. 队列与广度优先搜索 5. 环形队列 13. 本阶段总结 II. C语言本质 14. 计算机中数的表示 1...

    嵌入式Linux C编程入门(第2版) PPT

    第3章 构建嵌入式linux系统 71 3.1 嵌入式系统开发环境的构建 71 3.1.1 嵌入式交叉编译环境搭建 71 3.1.2 minicom和超级终端配置及使用 76 3.1.3 宿主机服务配置 83 3.2 bootloader 87 3.2.1 ...

    [编译原理].陈意云.文字版

    第3章 语法分析 3.1 上下文无关文法 3.1.1 上下文无关文法的定义 3.1.2 推导 3.1.3 分析树 3.1.4 二义性 3.2 语言和文法 3.2.1 正规式和上下文无关文法的比较 3.2.2 分离词法分析器的理由 3.2.3 ...

    天书夜谈:从汇编语言到Windows内核编程

     第3章 练习反汇编C语言程序 26  3.1 算法的反汇编 27  3.1.1 算法反汇编代码分析 27  3.1.2 算法反汇编阅读技巧 28  3.2 发行版的反汇编 29  3.3 汇编反C语言练习 33  基础篇 内核编程  本书的第二部分,是...

    天书夜读:从汇编语言到Windows内核编程(完整版一)

     第3章 练习反汇编C语言程序 26  3.1 算法的反汇编 27  3.1.1 算法反汇编代码分析 27  3.1.2 算法反汇编阅读技巧 28  3.2 发行版的反汇编 29  3.3 汇编反C语言练习 33  基础篇 内核编程  本书的第二部分,是...

    天书夜读:从汇编语言到Windows内核编程(完整版 二)

     第3章 练习反汇编C语言程序 26  3.1 算法的反汇编 27  3.1.1 算法反汇编代码分析 27  3.1.2 算法反汇编阅读技巧 28  3.2 发行版的反汇编 29  3.3 汇编反C语言练习 33  基础篇 内核编程  本书的第二部分,是...

Global site tag (gtag.js) - Google Analytics