Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44118
  • 博文数量: 12
  • 博客积分: 315
  • 博客等级: 一等列兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-25 11:10
文章分类
文章存档

2011年(12)

我的朋友

分类: C/C++

2011-03-10 20:49:32

4.2 返回非整形值的函数
1.如果没有函数原型,那么函数名字第一次出现的时候,会被隐式声明,例如
sum += atof(line);
如果一个名字从未出现,后面跟着一个左圆括号,就被认为是一个函数名字,返回值被默认为整形,但上下文对其参数并不做任何假设
 
4.4作用域规则
1.函数和外部变量作用域从声明他的地方开始,到所在文件的末尾;
2.如果要在外部变量定义之前使用外部变量,或者外部变量定义在别的文件,那么要加上extern
3.在所有源文件中,一个外部变量只能定义一次,但是可以在其他文件中多次用extern声明来使用它,声明不一定要指明数组的长度
double val[MAXVAL];//定义,分配存储单元
extern double val[];//声明,未分配存储空间,不一定需要指明数组长度在其他地方分配
 
4.6static变量
1.static修饰函数:函数只对声明它的文件可见;
2.static修饰变量:变量始终存在,但是只在定义它的函数内可见.
 
4.7寄存器变量
1.寄存器变量:一般把使用频率高的变量声明为register类型,可以使程序速度加快,过多定义register变量并没有坏处,即使实际上并没有被放入寄存器,对register变量取地址都是错误的.
 
4.11C预处理器
1.#include<>和#include""的区别:""是从文件所在路径开始查找包含文件,<>是按一定规则查找
2.#define max(A, B) ((A) > (B) ? (A) : (B)) //如果替换内容不带(),可能会带来错误
x = max(p+q, r+s);
x = ((p+q) > (r+s) ? (p+q) : (r+s));
3.#undef getchar//可以通过undef取消宏定义
4.#define dprint(expr) printf(#expr " = %g\n", expr)  //带上#,将把参数编程带""的字符串
dprint(x/y);//将被替换为
printf("x/y" " = &g\n", x/y);//也就是
printf("x/y = &g\n", x/y);
#define paste(front, back) front ## back //连接两个参数
阅读(1808) | 评论(0) | 转发(0) |
0

上一篇:1导言

下一篇:第4章C++/C程序设计入门

给主人留下些什么吧!~~