C语言部分重要考点疑难精解.doc_第1页
C语言部分重要考点疑难精解.doc_第2页
C语言部分重要考点疑难精解.doc_第3页
C语言部分重要考点疑难精解.doc_第4页
C语言部分重要考点疑难精解.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 次C语言部分重要考点疑难精解1 数据类型(常量与变量)11.1 字符常量11.2 符号常量及宏定义11.3 指针变量及其运算22. 数组与指针、字符串处理32.1 字符串、字符数组与指针32.2 二维数组及指针43. 函数63.1 参数处理顺序63.2 库函数63.3 有参函数的定义64. 共用体、结构体与单向链表84.1 共用体变量、数组的定义84.2 指针与结构体84.3 单向链表的逆向建立9C语言部分重要考点疑难精解1 数据类型(常量与变量)1.1 字符常量字符常量是用两个单引号前后括住的单个字符来表示。其中转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。转义字符主要用来表示那些用一般字符不便于表示的控制代码(用其ASCII码值的八进制或十六进制表示)。因为ASCII码表中字符的最大码值为127或255,而127=(177)8=(7F)16,255=(377)8=(FF)16,所以八进制形式最多要用3位、十六进制形式最多要用2位就够表示了。其中 ddd 即表示是13位8进制数对应的符号, xhh 是12位16进制数对应的符号,比如:101,(101)8即(65)10,是字符A的ASCII码值,故101表示字符A;x41,(41)16即(65)10,也表示字符A。由于在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式类似,于是,一个字符数据既可以以字符形式处理、输出,也可以以整数形式处理、输出。但容易出现溢出问题(C语言编译不报错),例如:(07秋)24若有程序段“char c=256;int a=c;”,则执行该程序段后a的值是_。 A256 B65536 C0 D-1由于8个二进制位所能表示的最大无符号整数是(1111 1111)2 ,即(255)10 ,而(256)10=(28)10=(10000 0000)2,最高位1溢出被舍弃,故本题结果为0。1.2 符号常量及宏定义符号常量的定义实际是“宏”定义的特例。所谓“宏”定义就是在程序的开始将一个“标识符”定义成“一串符号”,这个“标识符”称为宏名;在源程序中可以出现这个宏,称为“宏引用”或“宏调用”;在源程序编译前,将程序清单中每个“宏名”都原样替换成对应的“一串符号”,称为“宏替换”或“宏扩展”。为了区别于一般的变量名等,宏名通常用大写字母组成。宏定义是以“#define”开头的编译预处理命令,分为无参宏和带参宏两种。NULL、EOF是系统提供的符号常量,分别与0、-1等值,使用前必须在程序开头加上“#include stdio.h或#include ”编译预处理命令。NULL一般用来表示空地址值,与0、0可等值互换使用;EOF为一些系统函数的返回值。1.3 指针变量及其运算指针是一种数据类型。所谓指针,就是指存放数据的内存地址。指针变量中存放的数据就是地址值。指针变量的定义形式是:数据类型名 * 指针变量名;注意:定义时指针变量名前的*仅仅是一个标志,不具备“取内容符”的含义; 指针变量必须在获得合法空间的地址值之后,方能进行各种运算、处理; 指针变量可以与整数进行加减运算,例如,有下列程序段:int a,*p;p=&a;若p中值为FFDE(十六进制),则p+1的值为FFE0,即前者加上2的结果,含义是p+1为p所指数据空间的下一个数据空间的地址值,int型数据占据的空间字节数为2;两个同样类型的指针变量可以进行减法运算,运算结果为整数,值为两个指针变量所指空间地址之间的空间个数值(有正、负之分)。二者不能进行加法运算。例如,有下列程序段: int a,b,*p,*q;p=&a;q=&b; 若p值为FFDE,q值为FFE0,则p-q的值为-1,q-p的值为1。注意,int型数据占据的一个空间字节数为2。 两个同样类型的指针变量可以进行关系运算,上例中,page 其中,第二种的( )不能省,因为成员运算符“.”的优先级比“*”高。“-”为指向成员运算符,优先级也是最高的。4.3 单向链表的逆向建立(先产生表上最后一个结点,再产生倒数第二个直到产生第一个结点)假设想创建如下链表: 101 101 2000 411 304 200419600200410450304200405530.54112004015502000 head #include stdio.h#include stdlib.hstruct STUlong num; /*学号*/ float score; /*成绩*/ struct STU *next;int n;/*全局变量,结点个数*/struct STU *nxcreate()/*逆向建表函数,比顺次建表的算法容易*/struct STU *head,*p; n=0; head=NULL; p=(struct STU *)malloc(sizeof(struct STU); printf(n Input the nodes number,num is 0 stopn);/*读入学号,为0结束*/ scanf(%ld%f,&p-num,&p-score); while(p-num!=0)/*用学号来控制结点个数,为0则终止建表*/ n=n+1; p-next=head; head=p;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论