- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
陆静秋
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);
}
= 2 \* GB3 \* MERGEFORMAT ②#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结构和联合都是由多个不同数据类型的成员组成,但是在任何同一时刻,联合中只存放一个被选中的成员(所有成员公用一个地址空间),而结构的所有成员都存在(不同成员的存放地址不同)。
对联合的不同成员赋值,将会对其他成员重写,而结构不存在
5.0
6对于编译器而言,一个数组是一个地址,一个指针是一个地址的地址。指针定义时,编译器不会为指针所指向的对象分配内存空间;不能对数组进行字节复制和比较。
7.在C语言中,只规定了无符号数的移位操作是采用逻辑位移。对于有符号数,其位移操作取决于机器。因此一个程序如果使用了有符号的右移操作,那么它就是不可移植的了
8.在函数体,一个被申明为静态的变量在这一函数被调用过的程序中维持其值不变;在模块内,(但是在函数体之外),一个被申明为静态的变量可以被模块内所用函数访问,但不能被模块外的函数访问;在模块外,一个被申明为静态的函数只能被这一模块内的其他函数调用。那就是这个函数被限制在声明它的模块的本地范围内使用。
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都不允许改写
11.内存分配成功并且已经初始化,但操作越过了内存的边界。
12.内存分配虽然成功,但是尚未初始化就引用它。
犯这种错误主要有两个起因:一是没有初始化的观念;二是误以为内存的缺省初值全为零,导致引用初值错误(例如数组)。
13尽可能多地使用const限定符,把不该变的都声明成只读,这样可以依靠编译器检查程序中的Bug,防止意外改写数据。
const对编译器优化是一个有用的提示,编译器也许会把const变量优化成常量
而#define不做预发检查,只做傻瓜式替换,比如拼写错误是不检查的
14函数式宏定义的参数没有类型,预处理器只负责形式上的替换,而不做参数类型检查,所以参数传递时要小心;调用函数的代码和宏定义式的代码生成的指令不同;调用参数时限求实数表达式的值再传给形参,但是如果实数表达式有side effect,那么sideeffect 只发生一场,但是如果是宏定义,那就可能发生多次。
15特点:函数调用时给形参分配独立的存储单元,并把实参的值一对一应传递给形参;函数调用完毕释放形参的存储空间;形参值得改变不会影响实参;返回值必须由return语句返回给主调函数;可以有多个return语句,但只能返回一个值;
注意:用malloc 或new 申请内存之后,应该立即检查指针值是否为NULL。防止使用指针值为NULL 的内存。
不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。
避免数组或指针的下标越界,特别要当心发生“多1”或者“少1”操作。
动态内存的申请与释放必须配对,防止内存泄漏
用free 或delete 释放了内存之后,立即将指针设置为NULL,防止产生“野指针”;
16#include.stdio.h
Vo
文档评论(0)