摘要: 可以用typedef声明新的类型名来代替已有的类型名。如: typedef int INTEGERtypedef float REAL底子太薄了,哎,惭愧,看看基本运算符吧,赋值运算符:“=”表示,左操作数是一个变量,右操作数可以是其他的表达式,它表示将表达式计算结果的值赋给左边的变量。除法(/)运算的2个变量均为整型,则结果为整除取整。否则结果就是浮点型的。参与模运算(%)的2个变量只能是整型,而不能是浮点型。全局变量初始化默认是0,不过局部变量就是未知数了!等号的返回值:等号返回的是“=”右边的值! 阅读全文
posted @ 2011-12-21 04:55 [无名] 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 一、内部函数一个函数只能被本文件中其他函数调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static.static int fun(int a, int b)内部函数又称为静态函数。通常把只能由同一文件使用的函数和外部变量放在一个文件中,在它们前面都冠以static使之局部化,其他文件不能引用。二、外部函数(1)在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数时外部函数,可供其他文件调用。extern int fun(int a, int b)C语言规定,如果在定义函数时省略extern,则隐含为外部函数。(2)在需要调用此函数的文件中用extern 阅读全文
posted @ 2011-12-21 03:18 [无名] 阅读(872) 评论(0) 推荐(0) 编辑
摘要: (*(void(*)())0)(),这是在C陷阱与缺陷中,关于解决计算机开机启动后,硬件读取首地址为0位置的子例程的代码。 先看(*fp)(),fp是一个函数指针,*fp就是该指针所指向的函数,(*fp)()就是调用该函数的方式。 我们按照题目要求假设可以的话,则字面上可以写成(*0)();但是,正如(*fp)(),运算符*必须要一个 指针来作操作数,并且是函数指针,这样经过运算符*作用后的结果才能作为函数被调用。因此 ,需要对0进行类型 转换,转换后的意思可以描述为:指向返回值为void类型的函数的指针,其等价于( void (*) () )0。(*0)()加上 0转换后的类型为(... 阅读全文
posted @ 2011-12-21 02:40 [无名] 阅读(634) 评论(0) 推荐(0) 编辑
摘要: 优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员名->成员选择(指针)对象指针->成员名2-负号运算符-表达式右到左单目运算符(类型)强制类型转换(数据类型)表达式++自增运算符++变量名/变量名++单目运算符--自减运算符--变量名/变量名--单目运算符*取值运算符*指针变量单目运算符&取地址运算符&变量名单目运算符!逻辑非运算符!表达式单目运算符~按位取反运算符~表达式单目运算符sizeof长度运算符sizeof(表达式)3/除表达式/表达式左到右双目运算符*乘表 阅读全文
posted @ 2011-12-21 01:14 [无名] 阅读(207) 评论(0) 推荐(0) 编辑