1 / 14
文档名称:

陆静秋.doc

格式:doc   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

陆静秋.doc

上传人:zbfc1172 2012/9/16 文件大小:0 KB

下载得到文件列表

陆静秋.doc

文档介绍

文档介绍:1.
(1)
#define day 365
#define hour 24
#define min 60
#define sec 60
#define s day*hour*min*sec
(2)
Main()
{
printf("s=%d\n",s)
}
Main()
{
Printf ("M=%d\n",M);
}
②#define
#define MIN(a,b)( (a)<(b)?a:b )
2.
int a;
int *p;
int *(*p);
int a[10];
int (*p)[10];
int *p[10];
typedef int(*fun_ptr)(int,int);

int *a[10];
typedef int (*func_ptr)(int)
int (*a)(int *)=func_ptr;
3不会在两个操作之间把volatile变量存在寄存器中;不做常量合并,常量传播等优化;对volatile变量的读写不会被优化掉
举例:中断服务程序种修改的供其他程序检测的变量需要volatile;多任务环境下各任务间共享的标志应该加volatile;存储映射器的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义
4结构和联合都是由多个不同数据类型的成员组成,但是在任何同一时刻,联合中只存放一个被选中的成员(所有成员公用一个地址空间),而结构的所有成员都存在(不同成员的存放地址不同)。
对联合的不同成员赋值,将会对其他成员重写,而结构不存在

6对于编译器而言,一个数组是一个地址,一个指针是一个地址的地址。指针定义时,编译器不会为指针所指向的对象分配内存空间;不能对数组进行字节复制和比较。
,只规定了无符号数的移位操作是采用逻辑位移。对于有符号数,其位移操作取决于机器。因此一个程序如果使用了有符号的右移操作,那么它就是不可移植的了
,一个被申明为静态的变量在这一函数被调用过的程序中维持其值不变;在模块内,(但是在函数体之外),一个被申明为静态的变量可以被模块内所用函数访问,但不能被模块外的函数访问;在模块外,一个被申明为静态的函数只能被这一模块内的其他函数调用。那就是这个函数被限制在声明它的模块的本地范围内使用。
9前者只在指定的头文件搜索,后者在当前目录下找,也在系统指定的头文件搜素
10 const int* a; int const *a;
是一个指向const int型的指针,a所指向的内存单元不可改写,所以(*a)++是不允许的,但a可以改写,所以a++是允许的。
int* const a;
a是一个指向int型的const指针,*a是可以改写的,但a不允许改写。
int const * const a;
a是一个指向const int型的const指针,因此*a和a都不允许改写
,但操作越过了内存的边界。
,但是尚未初始化就引用它。
犯这种错误主要有两个起因:一是没有初始化的观念;二是误以为内存的缺省初值全为零,导致引用初值错误(例如数组)。
13尽可能多地使用const限定符,把不该变的都声明成只读,这样可以依靠编译器检查程序中的Bug,防止意外改写数据。
const对编译器优化是一个有用的提示,编译器也许会把const变量优化成常量
而#define不做预发检查,只做傻瓜式替换,比如拼写错误是不检查的
14函数式宏定义的参数没有类型,预处理器只负责形式上的替换,而不做参数类型检查,所以参数传递时要小心;调用函数的代码和宏定义式的代码生成的指令不同;调用参数时限求实数表达式的值再传给形参,但是如果实数表达式有side effect,那么sideeffect 只发生一场,但是如果是宏定义,那就可能发生多次。
15特点:函数调用时给形参分配独立的存储单元,并把实参的值一对一应传递给形参;函数调用完毕释放形参的存储空间;形参值得改变不会影响实参;返回值必须由return语句返回给主调函数;可以有多个return语句,但只能返回一个值;
注意:用malloc 或new 申请内存之后,应该立即检查指针值是否为NULL。防止使用指针值为NULL 的内存。
不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。
避免数组或指针的下标越界,特别要当心发生“多1”或者“少1”操作。
动态内存的申请与释放必须配对,防止内存泄漏
用free 或delete 释放了内存之后,立即将指针设置为NULL,防止产生“野指针”;
16#include<