C语言程序设计第1至8章复习知识点总结

上传人:鲁** 文档编号:592684870 上传时间:2024-09-22 格式:PPT 页数:110 大小:1.60MB
返回 下载 相关 举报
C语言程序设计第1至8章复习知识点总结_第1页
第1页 / 共110页
C语言程序设计第1至8章复习知识点总结_第2页
第2页 / 共110页
C语言程序设计第1至8章复习知识点总结_第3页
第3页 / 共110页
C语言程序设计第1至8章复习知识点总结_第4页
第4页 / 共110页
C语言程序设计第1至8章复习知识点总结_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《C语言程序设计第1至8章复习知识点总结》由会员分享,可在线阅读,更多相关《C语言程序设计第1至8章复习知识点总结(110页珍藏版)》请在金锄头文库上搜索。

1、第一章c语言概述总结1简单的C语言程序介绍例1.1输出一行信息/*example1.1ThefirstCProgram*/#includevoidmain()printf(“ShantouPolytechnic.n”);注释编译预处理主函数语句例:下面程序执行后,变量b的值为,变量c的值为。main()inta,b,c=1;a=21;b=a%8;/*c=+a;*/51例1.3求两个数中的较大者/*example1.3*/#include/*包含头文件*/voidmain()/*主函数*/intmax(intx,inty);/*对调用函数max的声明,x,y为形参、整型*/inta,b,c;/*

2、定义变量a、b、c*/scanf(%d,%d,&a,&b);/*输入变量a,b的值*/c=max(a,b);/*调用max函数,将得到的值赋给c,x、y为实参*/printf(max=%dn,c);/*输出c的值*/intmax(intx,inty)/*定义max函数,函数值为整型,x、y为形参,整型*/intz;/*定义内部变量z*/if(xy)z=x;/*比较x,y的大小,如果x大于y,则执行z=x*/elsez=y;/*否则执行z=y*/return(z);/*将z的值返回,通过max带回调用处*/10,7max=102.C语言的结构特点1、函数是组成C程序的基本构件;2、一个函数由两部

3、分组成;函数的说明部分函数体函数体:说明语句;执行语句;3、一个C程序总是从main函数开始;4、语句以分号“;”结束;5、书写格式自由。/*example1.4*/#include/*themainprogram*/main()inta,b,sum;a=10;b=24;sum=add(a,b);printf(”sum=%dn,sum);/*Thisfunction*/intadd(intx,inty)intz;z=x+y;return(z); 开 始 编 辑 编 译 连 接 执 行 有错?结果正确? 结 束有源程序 file.c目标程序file.obj库函数和其它目标程序可执行目标程序fil

4、e.exe无正确不正确1编辑3链接2编译4执行1、程序代码的录入,生成源程序*.c(*.cpp)2、语法分析查错,翻译生成目标程序*.obj3、与其它目标程序或库链接装配,生成可执行程序*.exe4、执行程序,得到结果3.C程序的上机步骤第二章数据类型、运算符与表达式总结1二进制和补码求法anan-1a1a0=an*2n+an-1*2n-1+a1*21+a0*20如:1010=1*23+0*22+1*21+0*20=10如:-5的补码求法(-5的二进制:1000000000000101)1、取绝对值:00000000000001012、取反:11111111111110103、加“1”:111

5、1111111111011补码的求法:1、正数的补码与原码相同。2、负数的补码:取绝对值,取反,加“1”。二进制:常量的表示方法:十进制:09,还有正、负号;八进制:07,以0开头;十六进制:09,AF/af,以0x或0X开头。例、整数-35在机内的补码表示为。如:-35的补码求法(-35的二进制:1000000000100011)1、取绝对值:00000000001000112、取反:11111111110111003、加“1”:11111111110111012基本数据类型1、整型2、实型3、字符型实型小数形式:3.14指数形式:3.14*103=3.14e003字符对应ASCII表标准化

6、指数形式:3.14*103只有一个大于0的整数例:以下选项中,不能作为合法常量的是()A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0B2常量与变量符号常量:#defineN3/没有“;”,运行中N不可变/N按原样3代入程序中例:下列程序执行后的输出结果是( )#define YC(x) x*(x-1) main() int a=1,b=2;printf(%d n, YC(1+a+b);A) 6 B) 8C) 10D) 12B变量:inta=510;标识符的构成规则:以字母和下划线开头;随后可跟数个或零个字母、数字和下划线;标识符的长度由系统决定,最好不要超过8

7、个字符。例如:y,Y,year,year3,_day,a_to_B,这些都合法6x,int,re-write,theroom,#hour,这些不合法注意区分大小写:sum和Sum是两个不同的标识符。a a510510变量值变量值为变量分配的存储单为变量分配的存储单元元变量名变量名变量必须“先定义后使用”变量的定义、赋初值和引用1、整型2、实型3、字符型inta;longa;unsignedu;%d;%ld;%ufloatf=3.14;doublef=1.1e003;%f;double输入%lfcharc=a;%c字符串用%s1、整型:int:16bit=2Byte;long:4Byte2、实型

8、:float:4Byte;double:8Byte3、字符型:char:8bit实型数有效位数:float:7位有效数字double:1516位有效数字转义字符常量反斜杆与可视字符组合,例如(P24表2.3)00字符串结束标志字符串结束标志n换行换行t跳到下一个输出位置跳到下一个输出位置双引号字符双引号字符dddddd为为1到到3位八进制数所代表的字符位八进制数所代表的字符xhhhh为为1到到2位十六进制数所代表的字符位十六进制数所代表的字符#includevoidmain()charc1,c2;c1=a;c2=b;printf(%d,%dn,c1,c2);printf(%c,%cn,c1,c

9、2);c1=c1-32;c2=c2-32;printf(%c,%cn,c1,c2);例2.7大小写字母的转换。结果:97,98a,bA,B字符型能与整型一起运算用用双引号双引号括起的一个字符序列括起的一个字符序列例如:例如:ABC、123、a、 nt nGood morning字符串常量的字符串常量的长度度 :所包含的字符个数所包含的字符个数 字符串常量的存字符串常量的存储方式:方式: nGoodmorning0a0所占存储单元数:串长度1例如:字符串结束标记 字符串常量字符串常量 9、以下程序的输出结果是()。charstr15=”hello!”;printf(“%dn”,strlen(st

10、r);A.15B.14C.7D.6str1=?数组str有多少个元素?15个,str6开始都是0str1=eD4运算符和表达式表达式运算符优先级结合性表达式:y+=i+;a=3;a&41、表达式的值是多少?2、运算对象的值是多少?运算符:按运算对象分:单目、双目、三目按功能分:算术、赋值、关系、逻辑条件、逗号、位、其他C运算符的“优先级口决”(必须认识所有的C的运算符)。优先级:括号成员第一;/括号运算符(),成员运算符.-全体单目第二;/所有的单目运算符比如+-+(正)-(负)/指针运算*&乘除余三,加减四;/这个余是指取余运算即%移位五,关系六;/移位运算符:关系:=b?i+:-i;(3)

11、a+=a-=a*a;(4)a&b;(&和|有屏蔽功能)(5)b%a和b/a;(%要求int%int;int/int=int直接去掉小数部分)(6)mnk如何表示?#在C语言中,要求运算数必须是整型的运算符是()A)%B)/C)D)!#以下程序输出结果:#includevoidmain()inta=1,b=2,c=3,d=4,m=2,n=2;printf(%d,%d,(m=ab)&(n=cd),n);#判断char型变量ch是否为大写字母的正确表达式是。A)A=ch=A)&(ch=A)&(ch=Z)D)(A=ch)0,2c#以下程序的运行结果是。#includevoidmain()inta,b,

12、d=241;a=d/100%9;b=(-1)&(-1);printf(%d,%d,a,b);#、inta=3;a+=(a1)?a:1;printf(“%d”,a);结果是。2,14(6)以下程序运行后的输出结果是main()inta,b,c;a=10;b=20;c=(a%b1);printf(%dn,c);0各种类型数据的混合运算:要求自动转换类型doublefloatlongintchar,shortunsigned高低整型、实型、字符型数据可以混合运算,不同类型的数据要先转换成同一类型。从左向右扫描,根据优先级决定运算顺序。注意:每一步运算都要先转换为同一类型例:inta=3,b=4;fl

13、oatc=3.0/4,d=b/a;printf(%f,%f,c,d);数据类型的强制转换例2.8强制类型转换#includevoidmain()doublex;inti;x=3.6;i=(int)x;printf(x=%6.2f;i=%d,x,i);x=3.60;i=3逗号运算符和逗号表达式逗号表达式的一般形式逗号表达式的一般形式 表达式表达式1,表达式,表达式2,表达式,表达式n 逗号表达式的逗号表达式的值从从左向右左向右,依次依次对表达式求表达式求值,最后最后得到得到表达式表达式n 的的值就是逗号表达式的就是逗号表达式的值例如:例如:a=5,a+,a*3 表达式表达式值为值为 1818,且

14、,且a=6a=6t=1,t+5,t+表达式表达式值为值为 1 1,且,且t=2t=2x=(a=3*5,a*4)赋值表达式赋值表达式的值为的值为6060,且,且x=60,a=15x=60,a=15第三章顺序程序设计总结一、算法1966年提出三种基本结构:顺序、选择和循环。(1)顺序结构ABAB(2)选择结构a=3;b=a;YNABP成立? P T F A Bif(a!=0)b=sin(a)/a;elseb=1;结构化程序的三种基本结构(3)循环结构:根据条件P决定是否执行循环体中的操作NYP成立?A当P成立时 A A当P成立时YNAP成立?while(i10)s=s+3;i+;dos=s+3;i

15、+;while(i10);当型循环直到型循环c语句分为两大类:C C程序由函数程序由函数组组成。函数的格式:成。函数的格式:函数名(参数表)函数名(参数表) 说说明部分;明部分;执执行部分;行部分; 数据类型说明语句数据类型说明语句可执行语句1、说明性语句;2、可执行语句。二、C语句语句格式执行步骤(流程图)可执行语句分为5类:(1)控制语句:9种(P54-55)(2)函数调用语句(3)表达式语句(4)空语句“;”(5)复合语句.(1)控制语句:9种9种控制语句:if()elsefor()while()dowhile();continue/结束本次循环break/终止循环或switch语句sw

16、itchgotoreturn赋值表达式将表达式的值存入变量对应的内存单元中m=12b=(+a)-2m%=3+n等价于m=m%(3+n)x*=(x=5)a+=a-=a*a等价于a+=(a-=(a*a)赋值表达式和赋值语句如果a=3,a+=a-=a*a结果是-12赋值号左边必须是变量,右边可以是C语言任意合法的表达式例如:n=t+2s;(a=3*5)=4*3;合法a+b=15;a=3*5=4*3;不合法赋值号与数学中的等号含义不同例如:数学中a=b等价于b=aC语言中a=b不等价于b=aint=float或int=double,对实数取整,舍去小数部分三、数据输入/出#include1、字符数据的

17、输入输出putchar(c);/字符输出函数,如:输出到显示器getchar();/字符输入函数,如:在键盘输入#includevoidmain()charc;c=getchar();putchar(c);putchar(c);putchar(99);结果:aacc注意:#只是输出/入一个字符#getchar()没有参数可以直接赋给字符变量#putchar()有参数可以是字符和整型常量和变量2、格式输入输出scanf(“格式控制”,地址列表);printf(“格式控制”,参数列表);格式控制包括:1.格式说明由%开头和格式字符组成。它的作用是将输入/出的数据转换为指定的格式输入/出。2.普通字

18、符即需要原样输出的字符。整数位数整数位数+ +小数位数小数位数+ +小数点小数点 自动对自动对n n位后小数位后小数四舍五入四舍五入 例如:例如:%ld 输出十出十进制制长整型数整型数 %m.nf 右右对齐,m位域位域宽,n位小数位小数或或n个字符个字符%-m.ne e为指数形式,指数形式,-为左左对齐%m.ns截取字符串左截取字符串左边n个字符个字符%+d输出出带符号整型数符号整型数 %*3d表示表示读入入3位整数但不位整数但不赋给任何任何变量量3以下的输出结果是_。main()intx=1,y=2;printf(“x=%dy=%d*sum*=%dn”,x,y,x+y);printf(“10

19、Squaredis:%dn”,10*10);例:输入2345678,结果是_#includevoidmain()intx,y;scanf(%2d%*2s%1d,&x,&y);printf(%d,x/y);3x=1y=2*sum*=310Squaredis:100第四章选择结构程序设计总结1、关系和逻辑表达式结果是一个逻辑值:“真”和“假”;即“0”或“1”关系运算符(左结合)=bc等价于ab&bc!为单目运算符!非算术运算符关系运算符&与|或赋值运算符高低2、if语句语句格式执行步骤(流程图)if语句的三种格式:1if(表达式)语句2if(表达式)语句1else语句23.if(表达式1)语句1

20、elseif(表达式2)语句2elseif(表达式m)语句melse语句n注:1、其中内嵌语句要是多条要用符合语句;2、表达式是c合法的表达式;3、else不能单独使用。1if(表达式)语句2if(表达式)语句1else语句23.if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3elseif(表达式4)语句4else语句53、嵌套的if语句在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:if()if()语句1else语句2内嵌一个if语句elseif()语句3else语句4内嵌一个if语句注意:if与else的配对关系。else总是与它上面

21、最近的未配对的if配对。if()if()语句1elseif()语句2else语句3内嵌if语句例如:以下if与else的配对关系(P101)可以加来确定配对关系if()if()语句1elseif()语句2else语句31.三个整数a、b、c,由键盘输入,输出其中最大的一个数。解法1、#includevoidmain()inta,b,c,max;scanf(%d%d%d,&a,&b,&c);if(amax)max=a;if(bmax)max=b;if(cmax)max=c;printf(max=%dn,max);解法2、#includevoidmain()inta,b,c,max;scanf(%

22、d%d%d,&a,&b,&c);if(ab&ac)max=a;elseif(ba&bc)max=b;elsemax=c;printf(max=%dn,max);4.3多分支选择结构由选择结构派生出来的一种结构,它也是一种基本结构(满足3个特征)kA1A2Ank=k1k=k2k=knswitch(k)/K为任何表达式casek1:A1;break;casek2:A2;break;casekn:An;break;default;/k1kn为常量表达式Switch语句说明:(1)switch后面括弧内的“表达式”允许为任何类型。(2)当表达式的值与某一个case后面的常量表达式的值相等时,就执行此c

23、ase后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。(3)每一个case的常量表达式的值必须互不相同,(4)各个case和default的出现次序不影响执行结果。例如,可以先出现“default:”,再出现“caseD:”,然后是“casea:”。(5)执行完一个case后面的语句后,流程控制转移到下一个case继续执行,直到switch结束。(6)多个case可以共用一组执行语句。例:从键盘上输入一个成绩等级grade,按下列原则输出其对应的分数:grade为A,分数为85-100;grade为B,分数为70-84;grade为C,分

24、数为60-69;grade为D,分数为60。grade为其他情况时,提示用户:输入有错。#includevoidmain()chargrade;printf(Inputagrade(A-D):);scanf(%c,&grade);switch(grade)caseA:printf(85-100n);break;caseB:printf(70-84n);break;caseC:printf(60-69n);break;caseD:printf(60n);break;default:printf(errorn);break;第五章循环结构程序设计总结1、while()、dowhile();、for

25、(1;2;3)三种语句当表达式为真 语句N-SN-S结构图结构图N NY Y流程图流程图表达式非0?语句循环控制条件循环控制条件循环体循环体while语句格式:While(表达式)语句do-while语句do-while语句是先执行循环体,然后判断循环条件是否成立。一般形式为:do循环体语句while(表达式);NY循环体表达式非0?流程图注意:do-while是一条语句,所以最后要加一个分号。l l功能:功能: 计算表达式计算表达式1 1的值,再的值,再判断表达式判断表达式2 2,如果其值为非,如果其值为非0 0(逻辑真)(逻辑真),则执行,则执行内嵌语句内嵌语句( (循环体循环体) ),并

26、,并计算表达式计算表达式3 3;之后再去判断;之后再去判断表达式表达式2 2,一直到,一直到其值为其值为0 0时时结束循环,执行后续语句。结束循环,执行后续语句。for语句的一般格式:for(表达式1;表达式2;表达式3)语句;循环初始条件循环初始条件循环体循环体循环控制条件循环控制条件N-S结构图for (表达式1;表达式2;表达式3) 语句NY流程图计算表达式1 语句计算表达式3表达式2为真?表达式可以部分或全部省略,但表达式可以部分或全部省略,但“ “; ;” ”不可省略不可省略for语句的算法描述:break语句的一般形式为:break;注意:break语句不能用于循环语句和Switc

27、h语句之外的任何其他语句中。后续语句break;break;Y YN N表达式表达式? ?后续语句break;break;表达式表达式? ?Y YN Nwhilewhile语句语句do-whiledo-while语句语句后续语句计算表达式计算表达式3 3计算表达式计算表达式1 1break;break;表达式表达式2?2?Y YN Nforfor语句语句后续语句continue;continue; Y YN N表达式表达式? ?后续语句continue;continue;表达式表达式? ?Y YN Nwhilewhile语句语句do-whiledo-while语句语句后续语句计算表达式计算表达

28、式3 3计算表达式计算表达式1 1continue;continue;表达式表达式2?2?Y YN Nforfor语句语句continue语句的一般形式为:continue;3break语句只是结束本次循环体的执行,不会结束整个循环语句。()4、for(a=1,b=1;a=20)break;if(b%3=1)b+=3;continue;b-=5;printf(“%d”,b);程序的输出结果b的值为。22循环的嵌套循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。三种循环(while循环、dowhile循环和for循环)可以互相嵌套。for(inti;in;i+)for(intj

29、;jm;j+)语句;1、从键盘上输入10个数,求其平均值。main()inti;floatf,sum;for(i=1,sum=0.0;i11;i+);printf(“average=%fn”,sum/10);1、scanf(“%d”,&f);2、sum+=f;(7)下面程序的功能是:计算“1+2+3+100”之和,请填空:#includemain()inti=1,sum;1;while(2)sum+=i+;printf(1100之和=%dn,sum);1、sum=0;2、i=100;五、编程求出“1/5+1/10+1/15+1/90”的值并输出到屏幕上。#includevoidmain()do

30、ublesum=0;for(inti=5;i=90;i=i+5)sum+=1.0/i;printf(sum=%fn,sum);第六章数组总结1变量2数组3指针变量的定义、赋初值、引用和作为函数参数数组的定义、初始化、引用和作为函数参数指针的定义、初始化、引用和作为函数参数考虑1、定义和引用一维数组一维数组的定义:数据类型 数组名常量表达式;注意:1格式2元素个数例如:例如: inta10;inta10;floatfloatscore5score5; ; “ “数据类型数据类型” ”:是是数组元素数组元素的数据类型。的数据类型。“ “数组名数组名” ”:遵循遵循C C语言语言标识符规则标识符规则

31、。“ “常量表达式常量表达式” ”:表示数组中有多少个元素,即数组的长度。它可:表示数组中有多少个元素,即数组的长度。它可以是以是整型常量、整型常量表达式或符号常量,整型常量、整型常量表达式或符号常量,不可以包含变量不可以包含变量。引用一维数组的元素数组名下标数组元素的形式:例如:输入学生成绩floatscore5,a,b;for(inti=0;i0strcmp(str1,str2)0strcmp(str1,str2)0strcmp(str1,str2)0自左向右逐个比较ASCII码值,直到出现不同字符或0为止12、下列程序的输出结果是(D)。char*p1=abcd,*p2=ABCD,str

32、50=xyz;strcpy(str+2,strcat(p1+2,p2+1);printf(%s,str);A.xyabcABB.abcABzC.ABabczD.xycdBCD第七章函数总结1、c程序必须有一个,且只有一个main函数2、函数名要遵守标识符的命名规则,函数名是函数的入口地址。3、函数的声明和定义的区别是:定义时有函数的功能,声明没有4、定义和声明时叫形参,调用时叫实参形参与实参的个数相等,对应,类型相匹配5、函数调用调用传递参数(单向值传递)返回主调函数释放形参(10)若程序中定义了以下函数doublemyadd(doublea,doubleb)return(a+b);并将其放在

33、调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是()A)doublemyadd(doublea,b);B)doublemyadd(double,double);C)doublemyadd(doubleb,doublea);D)doublemyadd(doublex,doubley);2、有一个一维数组,内放10个学生成绩,写一个函数(主函数调用该函数),求出平均分。#includefloataverage(floatarray,intn)inti;floataver,sum=array0;for(i=1;in;i+)sum=sum+arrayi;aver=sum/n;re

34、turn(aver);voidmain()floatave,score10;inti;for(i=0;i10;i+)scanf(%f,&scorei);ave=average(score,10);printf(%fn,ave);6、函数的嵌套和递归嵌套调用:就是在定义一个函数时,其函数体内 又包含另一个函数。递归调用:在调用一个函数的过程中又出现直接或间接地调用该函数本身。1、递归结束条件2、一般用到if语句结构if(结束条件)语句else语句(该语句调用本函数,规模越来越小)3、递归可以分为函数调用过程和返回过程3用递归的方法求n!(修改程序)#includefloatfac(n)float

35、f;if(n0)printf(“n0,dataerror!”);elseif(n=0|n=1)f=1;elsef=(n-1)*n;return(f);voidmain()intn;floaty;scanf(“%d”,&n);y=fac(n);printf(“%d!=%15.0fn”,n,y);改正1:floatfac(intn)改正2:elseif(n=0|n=1)f=1;改正3:elsef=fac(n-1)*n;错误1:错误2:错误3: 7、变量的作用域和生存期变量的作用域-局部变量和全局变量按作用域局部变量全局变量自动(auto):离开函数,值就消失静态(static)局部:离开函数,值仍

36、保留寄存器(register):离开函数,值消失外部变量:允许其他文件引用静态(static)外部:只限本文件引用(形参可以定义为auto或register)按变量存在的时间动态存储静态存储自动(auto):本函数内有效静态(static)局部:本函数内有效寄存器(register):本函数内有效外部变量:用extern声明后,允许其他文件引用静态(static)外部:本文件有效形参(可以定义为auto或register)本函数内有效按变量值存放的位置内存动态存储内存静态存储自动(auto):本函数内有效静态(static)局部:本函数内有效寄存器(register):本函数内有效外部变量:用

37、extern声明后,允许其他文件引用静态(static)外部:本文件有效形参(可以定义为auto或register)本函数内有效CPU寄存器(8)以下程序输出的最后一个值是 。#includeintfun(intn)staticintf=1;f*=n;returnf;voidmain()inti;for(i=1;i=3;i+)printf(%dn,fun(i);第8章指针总结1、认识一下指针的相关内容:int *p; /定义一个指针变量p/“*”是指向(单目运算符)/*p是一个变量/p叫做指针变量。它存放的是地址指针=地址*p存放的值指向一个地址中存放的值inti=3;int*i_pointe

38、r=&i;inti=3;int*i_pointer;i_pointer=&i;定义的同时初始化1、*和&都是单目运算符2、*i_pointer的值就是i的值3、指针变量i_pointer的类型和变量i的类型要相同4、指针变量只存放地址2、通过指针引用数组元素引用一个数组元素,可以用:()下标法,如形式;()指针法,如*()或*()。其中是数组名,是指向数组元素的指针变量,其初值。注意:这里的i代表i个地址单元3、用数组名和指针变量作函数参数如:voidmain()i(intarr,int);intarray;(array,);void(intarr,int)/编译时,形参arr按指针变量处理,

39、相当于voidf(int*arr,intn)调用函数时数组名和指针变量作为实参或形参时的对应关系实参实参形参形参数组名数组名数组名指针变量指针变量指针变量指针变量数组名4、如果有一个实参数组,想在函数中改变此数组中的元素的值,实参与形参的对应关系有以下种情况:(1)形参和实参都用数组名,如:voidmain()void(int,int)int10;(,10);a和x两个数组的地址相同(2)实参用数组名,形参用指针变量。如:void()void(int*,int)int;(,);(3)实参形参都用指针变量。例如:voidmain()void(int*,int)int,*p=a;(p,);注意:p

40、指针变量要先初始化,才能作为实参(4)实参为指针变量,形参为数组名。如:voidmain()void(intx,int),*p=a;(p,);/编译时,形参数组x按指针变量处理(1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),决不是将字符串放到字符指针变量中。(2)赋值方式。对字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值。charstr;strIloveChina!;而对字符指针变量,可以采用下面方法赋值:char*;IloveChina!;5、对使用字符指针变量和字符数组的讨论字符数组和字符指针变量二者之间的区别:(3)

41、对字符指针变量赋初值:char*loveChina!;等价于char*;IloveChina!;而对数组的初始化:charstrloveChina!;不能等价于charstr;strIloveChina!;(4)定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个字符变量的地址。例如:charstr;scanf(,str);(5)指针变量的值是可以改变的,例如:例8.15改变指针变量的值#includevoidmain()char*IloveChina!;/使a指向第八个字符printf(,);结果输出:China!#includevoidmain()char*lovehina!;int;printf(“Thesixthcharacteris%cn,a5);for(;!;)printf(,);(6)若定义了一个指针变量,并使它指向一个字符串,就可以用下标形式引用指针变量所指的字符串中的字符。例如:chara=“House”;char*b=“house”;a2=r;/合法,字符数组的元素可以改变b2=r;/不合法,字符串常量不能改变(7)字符数组中各个元素的值是可以改变的,但字符指针变量指向的字符串常量中的内容是不可以再赋值的。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号