C语言复习(全)
- 格式:doc
- 大小:93.00 KB
- 文档页数:9
01计算机本身最擅长的能力是?A、推理B、想像C、重复D、分析正确答案: C、重复。
02 计算机(CPU)能够直截了当运行人类编写的程序A、√B、×正确答案: B、×、03编程语言是与计算机交谈的语言A、√B、×正确答案: B、×。
04 关于C语言,以下讲法错误的有:A、C语言是与Unix操作系统一同发展起来的B、C语言不能写图形界面的软件C、C语言一般是编译执行的D、C语言诞生于1970年代正确答案: B、C语言不能写图形界面的软件、06 IDE的中文翻译是什么?正确答案是:集成开发环境、07 给定:int a,b; 以下哪些scanf的使用是正确的?A、scanf("%d”,&a); scanf(”%d",&b);B、scanf(”%d %d”, &a, &b);C、scanf("%d, %d", &a,&b);D、scanf("%d%d”, a, b);正确答案: A、scanf("%d”,&a); scanf(”%d", &b);。
B、scanf(”%d%d", &a, &b);、C、scanf(”%d,%d”,&a,&b);、08 以下哪些是有效的变量名?A、mainB、4everC、monkey—kingD、__int正确答案:A、main。
D、__int。
09给定:inta,b; scanf("%d %d", &a, &b);则以下哪些输入方式是正确的?A、1 2B、1,2C、1(回车)2D、1、2正确答案:A、1 2。
C、1(回车)2、10给定以下代码段:inta,b=0;则a的初始值是0A、√B、×正确答案: B、×、11写出下式的运算结果:10/3、0*3 正确答案是:10、0。
12写出下式的运算结果:10/3*3、0正确答案是:9、0。
一、判断题。
1、#include 、#define、scanf和printf都不是C语句。
(对)//#号开头的,是C语言的命令,最后不加分号“;”。
scanf和printf是输入和输出函数,不是C 语言的语句-----C语言里没有输入和输出语句,是由函数(如:这里的scanf 和printf函数)来实现输入和输出的。
2、一个include命令只可以指定一个被包含的文件。
(对)//include命令一次只可以指定一个包含的文件,要包含多个文件要用多个include命令3、参加位运算的数据必须是整型的数据。
(对)//如:不能使float类型的数据4、若有int i=9, j=3; 则执行完i*=j+10; 后i的值为20。
(错)//i*=j+10=>i=i*(j+10)=9*(3+10)=9*135、9&3+11的值是12。
(错)// 9&3+11=9&(3+11)=>1001&1110=1000=>86、关系运算符>=与==的优先级相同。
(错)//关系运算符的前4个(>、>=、<、<=)的优先级相同。
后两个(==、!=)的优先级相同,并且低于前4个的优先级。
7、若i=5,则printf(“%d”,-i++);输出的值为-6。
(错)//++在后面是先将-i打印,再将i加1。
如果是printf(“%d”,- ++i);则输出的值就为-6.8、语句printf(“%f%%”,10.0/3);输出为3.333333。
(错)//10.0/3确实是3.333333,但是这里还有%%,所以输出的结果应该是3.333333%9、若有int i=20, j=0;则执行完语句if(j=0)i++;else i--;i的值为21。
(错)//注意这里是j=0,一个等号是赋值,也就是j=0,这里是假,所以应该执行else i—部分,i的值为19.10、若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}}, i, sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。
一、C语言概述练习题选择1.一个C程序的执行是从。
A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是。
A) 一个C源程序必须包含一个main函数 B)一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面3.以下叙述正确的是。
A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面C) C语言本身没有输入输出语句 D) C程序的每行中只能写一条语句4.一个C语言程序是由。
A)一个主程序和若干个子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成5.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是。
A) C语言程序仅可以编译执行B) C语言程序仅可以解释执行C) C语言程序既可以编译执行又可以解释执行D) 以上说法都不对6.以下叙述中错误的是。
A) C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe 文件7.以下叙述正确的是。
A) C语言程序是由过程和函数组成的B) C语言函数可以嵌套调用,例如:fun(fun(x))C) C语言函数不可以单独编译 D) C语言中除了main函数,其他函数不可作为单独文件形式存在二、数据类型、运算符与表达式选择.1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为x=(i=4,j=16,k=32) A) 4 B) 16 C) 32D) 522.下列四组选项中,均不是C语言关键字的选项是。
第一部分 C语言知识复习资料第一章C语言基本知识【考点1】C程序用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。
源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。
C语言有三种基本结构:顺序结构、选择结构、循环结构。
【考点2】main函数又称主函数,是C程序的入口。
main后面跟一对小括号和一对花括号,花括号括起来的部分称为main 函数的函数体。
一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。
每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。
【考点3】存储形式计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。
二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。
数据的存放位置就是它的地址。
【考点4】注释是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。
【考点5】书写格式每条语句的后面必须有一个分号,分号是语句的一部分。
一行内可写多条语句,一个语句可写在多行上。
【考点6】标识符是标识名字的有效字符序列,可以理解为C程序中的单词。
标识符的命名规则是:(1)标识符只能由字母、数字和下划线组成,字母区分大小写。
(2)标识符的第一个字符必须是字母或下划线,不能为数字。
C语言标识符分如下3类(1)关键字。
它们在程序中有固定的含义,不能另作他用。
如int、for、switch等。
(2)预定义标识符。
预先定义并具有特定含义的标识符。
如define、include等。
(3)用户标识符。
用户根据需要定义的标识符,符合命名规则且不与关键字相同。
【考点7】常量与变量常量是指在程序运行过程中,其值不能改变的量。
电脑二级C复习资料公共基础知识资料第一章数据结构与算法【考点1】算法的基本概念算法:是指一组有穷的指令集,是解题方案的准确而完整的描述。
算法不等于程序,也不等于计算方法。
算法的基本特征:确定性,算法中每一步骤都必须有明确定义,不允许有多义性;有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;可行性,算法原则上能够精确地执行;拥有足够的情报。
算法的组成要素:一个算法由数据对象的运算和操作以及其控制结构这两部分组成。
算法的基本运算和操作:算术运算,逻辑运算,关系运算,数据传输。
算法的基本控制结构:顺序,选择,循环。
算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术。
【考点2】算法的复杂度算法效率的度量——算法的复杂度:时间复杂度和空间复杂度。
算法时间复杂度:指执行算法所需要的计算工作量。
通常,一个算法所用的时间包括编译时间和运行时间。
算法空间复杂度:指执行这个算法所需要的内存空间。
包括算法程序所占的空间,输入的初始数据所占的空间,算法执行过程中所需的额外空间。
空间复杂度和时间复杂度并不相关。
【考点3】数据结构的基本概念数据:数据是客观事物的符号表示,是能输入到电脑中并被计算程序识别和处理的符号的总称,如文档,声音,视频等。
数据元素:数据元素是数据的基本单位。
数据对象:数据对象是性质相同的数据元素的集合。
数据结构:是指由某一数据对象中所有数据成员之间的关系组成的集合。
【考点4】逻辑结构和存储结构数据结构可分为数据的逻辑结构和存储结构。
数据的逻辑结构是对数据元素之间的逻辑关系的描述,与数据的存储无关,是面向问题的,是独立于电脑的。
它包括数据对象和数据对象之间的关系。
数据的存储结构也称为数据的物理结构,是数据在电脑中的存放的方式,是面向电脑的,它包括数据元素的存储方式和关系的存储方式。
数据结构和逻辑结构的关系:一种数据的逻辑结构可以表示成多种存储结构即数据的逻辑结构和存储结构不一定一一对应。
c语⾔复习资料复习资料Ch2 数据类型、运算符与表达式1. C程序的结构:C程序是由⼀个或多个源⽂件组成,源⽂件是C程序的编译单位;源⽂件由函数组成的;⼀个程序有且仅有⼀个名字为main( )的函数;函数的定义不可嵌套,即,在⼀个函数内部不可定义另外⼀个函数;程序总是从main函数第⼀条可执⾏语句开始执⾏,在main函数结束;2.标识符合法的标识符的组成;如x1、a、max_int、_num等合法的,2x、x#等不合法,不能⽤关键字,如for、int等,最好不⽤函数名如 printf等。
关键字:查看附录B;如printf、define不是关键字;C语⾔区分⼤⼩写,故For、If等不是关键字3.常量的表⽰形式整型常量:⼗进制、⼋进制、⼗六进制。
如 028、0x2ah不合法;若整数是2个字节,则整数范围-32768-32767之间,32768(错) -037 0xaf均正确实型常量:3.0 2.3e3 2e-4正确,2e3.0错字符常量:注意转义字符,如\n、\72、\x23等均表⽰⼀个字符,如“\t\”name\\address\n”长度为15;’\38’错误字符串常量:变量定义及赋值:变量赋值时的类型应相同或兼容,如int a=3.5、float b=4、char c=97正确,但char ch=”abc”错误4.运算符及表达式运算符的功能、特点:如%要求两侧操作数均为整数;若 / 两侧操作数都是整数表⽰整除;运算符的优先级:复合运算符:如int a=3; 执⾏a+=a-=a*a; 后,a的值是-12;如:n=10,i=4,则赋值运算n%=i+1,n的值是逻辑运算符:掌握&& 和 || 的运算特点;如 i=2,j=3,k=4, if((i++) || (j++)) && k++) printf(“%d,%d,%d”,i,j,k);结果是?设a=3, b=4, c=5,表达式(1)‘a’ && ‘b’、 (2)a<=b 、a || b+c && b-c、(3)!((ab>a结果?如:c=0; 考虑,表达式c=b=a、(a=c)||(b=c)、(a=c)&&(b=c)、a=c=b能正确将c的值赋给变量a,b吗?为什么?关系运算符:注意= =与=的区别,如a=1,b=2 则if(a=3) b=0; 则b的值变化了吗?为什么?条件运算符:运算的特点如:i=1,j=2;执⾏语句n=i>j?i++:j++; 则i和j的值是5.⾃增⾃减:掌握前置与后置的运算特点;如:x=3,则表达式x++的结果是3,x的值变成4;⽽++x的结果是4,x的值也是4;-x++结果是-3,x的值变成4如:x=7,则(x++%3)结果是?6.表达式类型的转换:若char a; int b; float c; double d;则表达式 a*b+d-c 的值类型?7.逗号运算符:逗号表达式的值是最后⼀个表达式的值。
《C语言》课程综合复习资料一、单项选择1. 若有如下语句: int *p1,*p2; 则其中int所指的是()A. p1的类型B. *p1和*p2的类型C. p2的类型D. p1和p2所能指向变量的类型2. 下列程序段的输出结果是() x=9; while(x>7) {printf(“*”);x--;}A. ****B. ***C. **D. *3. 下列变量的定义及赋值正确的是()A. int i=0;j;B. char c=”A”;C. double x,y,z; x=y=z=100;D. float a=b=100;4. 设有语句:int x=10; x = x -= x - x;,则执行语句后,x的值为()A. 30B. 20C. 10D. 405. 设有语句:float x=1,y; y=x 3/2; 则y的值是()A. 1B. 2C. 2.0D. 2.56. 设有如下定义和执行语句,其输出结果为()int a=3,b=3; a = --b + 1; printf(“%d %d”,a,b);A. 3 2B. 4 2C. 2 2D. 2 37. 设有两字符串“Beijing”、“China”分别存放在字符数组str1[10],str2[10]中,下面语句中能把“China”连接到“Beijing”之后的为()A. strcpy(str1,str2);B. strcpy(str1, “China”);C. strcat(str1,“China”)D. strcat(“Beijing”,str2);8. 设有定义语句:char str[][20]={""Hello"",""Beijing""},*p=str; 则printf(""%d\n"",strlen(p+20)); 输出结果是()A. 0B. 5C. 7D. 209. 设有定义int a[ ]={1,5,7,9,11,13},*p=a 3;则*(p-2),*(a 4)的值是()A. 5 11B. 1 9C. 5 9D. 有错误10. 设有定义:int x=0,y=1,z=1;则运行表达式:x=y >z--后,x,y,z的值分别是()A. 1,1,1B. 1,2,0C. 0,1,1D. 0,2,011. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为()A. 0B. 1C. 2D. 312. 设有定义 int a=3,b=4,c=5; ,则以下表达式中,值为0的表达式是()A. a&&bB. a<=bC. a||b c&&b-cD. !((a<b)&&!c||1)13. 设有定义 int a[ ]={1,5,7,9,11,13}, *p=a 3; 则*(p-2) , *(a 4) 的值是()A. 5 11B. 1 9C. 5 9D. 有错误14. 设有定义 char *p=“abcde\0fghjik\0”; 则printf(“%d\n”,strlen(p));输出结果是()A. 12B. 15C. 6D. 515. 设有int x=11;则表达式(x *1/3)的值是()A. 3B. 4C. 11D. 1216. 设a=3,b=4,c=-5,则逻辑表达式:a || b c && b==c 的值是()A. 1B. 0C. 非0D. 语法错17. 若有以下定义:int a[10],*p=a; 则*(p+3)表示的是()A. 元素a[3]的地址B. 元素a[3]的值C. 元素a[4]的地址D. 元素a[4]的值18. 若有以下定义:char s[20]= "programming",*ps=s;则不能代表字符g的表达式是()A. ps 3B. s[3]C. ps[3]D. ps =3,*ps19. C语言中,函数返回值的类型是由()A. return语句中的表达式类型决定B. 调用函数的主调函数类型决定C. 调用函数时的临时类型决定D. 定义函数时所指定的函数类型决定20. C语言提供的合法关键字是()A. swicthB. chaC. CaseD. default二、读程序题1. "#include <stdio.h>void main(){ int a=4,x=3,y=2,z=1;printf(""%d\n"",(a<x ? a : z<y ? z : x));}"2. "#include <stdio.h>void main(){ int x=12,y=0;if(x>=0){ if(x>0) y=10; }else y=-10;printf(“y=%d\n”,y);}"3. "#include <stdio.h>void main(){ int k=1;switch(k){ case 0: printf(""A""); break;case 1: printf(""B"");case 2: printf(""I"");case 3: printf(""G""); break;default: printf(""E"");}}"4. "#include <stdio.h>#define S(x) x*xvoid main(){int a,k=3,m=1;a=S(k+m);printf(""%d"",a);}"5. "#include <stdio.h>int fun(int a, int b){ if(a>b) return(a);else return(b);}void main(){ int x=3, y=8, z=6, r;r=fun(fun(x,y), 2*z);printf(""%d\n"", r);}"6.#include <stdio.h&>void main(){ int k=4,n=0;for(;n<k;){ n++;if(n%3!=0) continue;k- -;}printf(""%d,%d\n"",k,n);}三、编程题1. 写一个判断素数的函数。
C语言知识点复习1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。
byte 是指字节, 一个字节= 八个位.概念:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。
C语言编写的程序称为源程序,它以ASCII数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数中不可以再定义函数。
4、break可用于循环结构和switch语句。
5、逗号运算符的级别最低。
概述和数据类型1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf 都不是关键字。
迷惑你的地方If是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333×10-1。
口诀:e前e后必有数,e后必为整数。
.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
表示单个字符错误的形式:'65' "1"字符是可以进行算术运算的,记住:'0'-0=48大写字母和小写字母转换的方法:'A'+32='a' 相互之间一般是相差32。
说明:本复习参考不作为C语言考试的重点,不代表C语言考试的范围,只是总结出来的感觉需要同学们引起注意的一些知识点。
复习时,可作为辅助参考资料。
建议在全面复习完教材一遍后再参考该资料。
复习建议:教材+课件+课后习题+平时实验报告和作业+复习参考。
预祝:复习充分,考取好成绩!1.C语言程序的基本结构(1) C语言由函数组成,有且只有一个main函数。
(2) 每个语句和数据定义的最后必须有一个分号;分号是C语句的必要组成部分。
(3) 可以用/*······*/对C程序的任何部分作注释。
2.标识符(1) 标识符:给程序中的实体所起的名字。
(2) 标识符的命名规则。
(3) 运算符:注意:①1/3=0,1.0/3=0.3333;②i++和++i的区别;③a+=5; a=a+5;i=1,j=2,k=3逗号表达式的值为33.数据类型(1) 符号常量定义:#define M 5(2) 变量必须先定以后使用,不能与关键字、函数名等重名。
(3) 进行变量声明后,计算机系统会为声明的变量分配相应大小的存储空间,用以存放数据。
单精度实型(float,%f ):4个字节,双精度实型(double,%lf):8个字节,字符型(char,%c):1个字节,整型(int,%d):2个字节。
(4) 字符常量——单引号(如:‟a‟),字符串常量——双引号(如:”student”)。
(5) 自动类型转换,如:int a; 则a=3.2的值为34.数据的输入/输出(1) printf语句中格式控制符的类型和个数必须与后面变量的类型和个数一一对应。
(2) 附加格式说明符。
(3) scanf语句中双引号里面的内容尽量简单,不要多加‟\n‟等字符,双引号里有什么输入时就必须输入什么,普通的变量前面应加&,表示地址的概念(注意如果是数组名,则不加&)。
(4) 使用scanf()函数应注意的问题。
5. 算法(1) 算法:为解决一个问题而采取的方法和步骤。
(2) 算法+数据结构=程序(3) 算法的五大特性。
(4) 算法的表示方法:自然语言、传统的程序流程图、N-S流程图。
6. 结构化程序设计的三种基本结构:顺序结构、分支(选择)结构、循环结构。
7. 程序设计语言:机器语言、汇编语言、高级语言。
8. 高级语言翻译成机器语言的两种方式:编译方式、解释方式。
C语言程序的基本结构1.关系运算符和逻辑运算符(1) 字符数据按其ASCII码值进行比较;(2) 应避免两个实数作==或!=的比较;(3) 注意等号“==”和赋值号“=”的区别;(4) 关系表达式的值只能是1或0,当表达式成立即为“真”时,值为整数1;否则为“假”,值为整数0。
(5) 表示x∈[-1,1]区间,应写为: x>=-1 && x<=1,不能写为:-1<=x<=1。
2. 如果if、while、for的语句体中有多条语句,必须用大括号括起,构成复合语句。
3. if、while、for中的表达式,一般是逻辑或关系表达式,也可以是任意类型表达式。
如while(a=5)……。
4. else只能与if配对使用。
仅else本身不能单独作为一个语句使用。
5. switch语句中case后面只能是常量值;若执行完某case后的语句没遇到break,则继续执行下一个case 语句。
6. 循环程序:注意循环变量的初值、修正值、循环条件等,以及循环中用到的某些变量赋初值,如求累加和变量。
7. 一般是先判断条件,再执行循环体;但do—while语句是先执行一遍循环体,再判断条件。
8. 内外层循环的循环控制变量不能重名。
9.break、continue语句。
模块化程序设计1. 函数(1) 一个较大的程序常分为若干模块,每个模块实现一个特定的功能。
C语言中用函数来实现模块的功能。
(2) 一个C语言源程序文件通常由一个main函数和若干个其它函数组成。
(3)C程序的执行从main函数开始,由主函数调用其它函数,其它函数也可以相互调用,程序流程最后回到main函数,在main函数中结束整个程序的运行。
(4) 一个函数(主调函数)可以多次调用多个函数(被调函数)。
同一个函数也可以被一个或多个函数调用任意多次。
但不能调用main函数。
(5) 函数不能嵌套定义,但可以相互调用。
2.函数的三大组成要素:函数定义、函数调用、函数声明。
3.函数调用的过程:(1) 遇到函数调用语句出来找函数;(2) 进行参数传递,形参传给实参,分两种:传值和传地址;(3) 执行函数;(4) 结果返回,取代函数调用语句;(5) 接着执行下一条语句。
4.函数定义:函数首部+函数体(1) 函数首部:函数的类型+函数名+函数的参数,如:int func(int a,int y)(2) 函数的类型为函数返回值的类型,如果函数没有返回值,即没有return语句,则类型为void。
如果定义时没指明函数类型,如:fun(int a),默认是int型,返回值不确定。
(3) 函数名为标识符,最好起能代表函数实现功能的名字。
(4) 函数定义中的参数为形参,每个参数都要定义类型,用逗号隔开,形参个数和类型必须与函数调用中的实参一一对应。
只有在函数被调用时系统才给形参分配空间,函数执行完空间释放。
(5) 函数体用花括号括起,函数中除了形参其它用到的变量在函数体中定义,函数返回值用return语句返回。
函数中定义的变量只在该函数中起作用(除了形参为地址的情况)。
(6) 函数定义的关键是函数首部,先看该函数有没有返回值,即需不需要返回结果,返回值的类型是什么,再确定函数的参数,即看需要告诉函数哪些值才能实现函数的功能。
5. 函数调用:函数名+一对括号的形式。
如:max(a, b);(1) 如果函数有返回值,一般要将函数调用的结果赋值给一个变量。
如:c=max(a, b);(2) 括号中的参数为实参,实参和形参个数和类型一一对应。
(3) 只有在主函数中有能直接或间接调用到该函数的函数调用语句,该函数才被执行,否则,函数即使定义也不被执行。
6. 函数声明:将函数首部抄一遍,加一个分号。
函数定义在前,使用(被调用)在后,可省略函数声明,反之需要在使用前声明。
7. 函数可嵌套调用,不可嵌套定义。
8. 使用库函数时,应在文件开头用#include命令将有关头文件包含进来。
9. 从作用域角度,变量分为:全局变量、局部变量。
(不做要求)(1) 全局变量:在函数外部定义,作用域从定义开始到本文件结束。
其间的所有函数都可以使用它,可在各函数间传递值,但容易带来副作用,降低模块独立性。
(2) 局部变量:在函数内部定义,只能在该函数中使用,包括函数的形参和复合语句中定义的变量,main函数中定义的变量也是局部变量,不能被其它函数使用。
(3) 不同函数内定义的同名变量,互不影响,因其作用域不同,内存空间独立。
10. 变量的存储类别:auto、static、register、extern。
(不做要求)(1) 全局变量的存储类别:static、extern。
(2) 全局变量总是存放在静态存储区间,生存期是整个程序运行期间,只赋一次初值,在程序运行前初始化,默认初值为0。
(3) 用extern对全局变量加以声明,可以将其作用域扩充到整个文件或其它文件。
定义全局变量时加上static,可将其作用域限制在本文件中,不能被其它文件使用。
例:P92。
(4) 局部变量的存储类别:auto、static、register。
(5) auto型的生存周期时函数被调期间,两次调用之间不保留值。
(6) static型的生存期是整个程序运行期间,保留上一次调用后的值,且只赋一次初值(在程序运行前初始化,默认初值为0)。
11. 函数的作用域是全局的,可被其它函数调用。
(1) 函数存储类别:static、extern。
默认为extern型。
(2) 如:static int func(int a);则函数不被其它文件使用,所以两文件中的同名静态函数,互不干扰。
12. 指针:就是地址。
(1) 内存地址:在计算机中,把内存区划分为一个一个的存储单元,每个单元为一个字节(8位),它们都有一个编号,这个编号就是内存单元的地址。
(2) 一定义变量,系统就在内存中给它分配空间,数据所占有的存储单元个数是由其类型决定的。
如:实型数据占4个字节。
首地址:第一个单元的地址。
(3) 直接访问:从内存单元中取出变量的值,或将变量的值存入对应的内存单元中。
间接访问:先从一个内存单元中获得变量的地址,再根据这个地址找到变量的内存单元,进行数据的读写。
(4) 存放地址的变量称为指针变量,变量的地址称为指针,此时,指针变量和指针有了指向关系。
13. 指针变量的定义,如:int a,*p=&a; “*”为指针的标志。
必须给指针变量赋地址值。
指针变量定义时必须指定其所指向的变量的数据类型,而且使用过程中只能指向同一种类型的变量。
14. *p为指针变量p所指向的变量的内容,反映了指针变量的引用方法:(1) 将变量的地址赋给指针变量(p1=&a1)(2) 将一个指针变量赋给另一个指针变量(p2=p1)(3) 通过指针变量间接访问它所指向的变量(*p1)15. p++表示指针指向了下一个元素。
16. 指针作为函数的参数,传递的是实参变量的地址,如:void func(int *p)。
调用时用某变量的地址常量,或指向该变量的指针作为实参,如主调函数中有定义int a,*q;q=&a;则可用&a或q作为实参进行调用,即func(&a);或func(q); 都是将变量a的地址传递给形参指针p,使指针p指向变量a,函数中使用*p就是对a的间接访问。
就可以改变a的值,或者将结果放入a中。
简单构造数据类型1. 数组:由相同类型的具有固定个数的元素组成的集合。
数组中的所有元素都属于同一个数据类型。
每个数组元素都是一个变量,其类型为数组的类型。
与相同类型的普通变量完全一样。
数组元素在数组中的序号称为下标。
通过数组名和下标来唯一的确定每一个元素。
2. 数组定义:int a[10];或int a[N]; 数组长度必须是常量值,不能是变量,可以是在程序开始前定义的符号常量,进行长度定义。
3. 数组名表示数组所占内存区域的首地址(即第1个元素的地址);4. 数组元素的下标从0开始;如:数组a包含10个元素:a[0], a[1], a[2], …, a[9]。
不存在数组元素a[10]。
5. 整个数组占用一段连续的内存单元,各元素按下标顺序存放。
6. 数组定义后如没有给各元素赋值,对于static类型,各元素初值为0;对于auto类型,各元素值不定。