1 / 13
文档名称:

C语言学习必备基础知识点总结.pdf

格式:pdf   大小:264KB   页数:13
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

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

分享

预览

C语言学习必备基础知识点总结.pdf

上传人:taoapp 2022/9/27 文件大小:264 KB

下载得到文件列表

C语言学习必备基础知识点总结.pdf

文档介绍

文档介绍:该【C语言学习必备基础知识点总结 】是由【taoapp】上传分享,文档一共【13】页,该文档可以免费在线阅读,需要了解更多关于【C语言学习必备基础知识点总结 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
常量
数字常量
:1,35,
:-*10-2注意e大小写皆可,e前面的数字
不能省,就算是1也不能省,后面的数字一定要是整数
,单精度浮点型:3235L,,
,若不写上L,F则表示3235是整型,
双精度浮点型,L,F大小写皆可
字符常量
:用单引号把一个字符括起来,如’A’,’@’
:一对单引号括起来并以“\”开头的字符序列,如’\n’(回
车)、’\123’(8进制123对应的字符),’\x23’(16进制23对应的字符)
字符串常量
用一对双引号把一个字符序列括起来,如“ABCef”,系统存放字符串
常量,每个字符分配一个字节,各字符所占字节紧邻,并且字符串末尾会给再开一个字节里面放一个’\0’做为结束标志。
符号常量
定义格式#define符号常量名符号常量值,如#defineN20则定义了符
号常量N,其值为20,注意符号常量名和符号常量值之间是用空格隔
开,而不是写上=号,#define和符号常量名之间也有空格的。
二、标识符
命名规则
以数字,字母,下划线这三类字符组成,但只能以字母或下划线开头,
而不能也数字开头,另外不能将关键字做为标识符。32个关键字表在
P365附录B
变量名,函数名,符号常量名全都是标识符
三、变量
变量的定义格式
类型名变量名;
如inta;定义了一个整型常量a。变量名是由人类随便定义的,符合命
名规则的前提下,爱写啥就写啥。所以什么flag,cc,y1或者函数名
fun,find等全部是自定的用来做为名字而已,没有更特别的意义。
类型名
int整型,long长整型:用于存放整数,只是数值范围不同
float单精度浮点型double双精度浮点型:用于存放实数,数值范围,
精度不同
char字符型:用于存放字符
变量赋值,初始化
inta=3;定义的同时初始化
a=6*9;定义后在程序中进行赋值
变量的值:.
只有在赋值操作时才会被改变,即将其放在等号左边时才会改变它的值,
或自增自减操作:a=5,a++,a--,像a+3并未改变a的值,只是使用了a
的值而已.
自增自减运算
变量++,++变量,变量--,--变量使变量的值自增1或自减1
等价于变量=变量+1变量=变量-1
++,--放于变量前后效果的区别:
当自增自减运算做为表达式的一部分时,++,--放在变量前面是先自增
自减再使用变量的值,放在变量后面则是先使用变量的值,再自增自减。
如x=3;printf(“%d”,++x);则相当于执行了++x;printf(“%d”,x);这样的操作
所以打印出4
再如x=3;printf(“%d”,x++);则相当于执行了printf(“%d”,x);x++;这样的
操作,则打印出3,当然最后x的值还是4。
四、表达式
运算符和运算对象
一个运算符都有若干个运算对象,如+必然要跟两个运算对象才能进
行加法运算:3+5。C语言里称需要跟n个运算对象的运算符为n元运
算符。
一元运算符有:!,(类型名)
二元运算符有:+,-,*,/,%(求余),=,+=,-=,*=,/=,%=,<,>,<=,>=,=
=(等于),!=(不等于),&&(且),||(或)
多元运算符有:,
运算符的优先级和结合性
:同一个运算对象左右两边若同时有两个运算符,则这两个运
算符优先级高的先进行运算。
:若同一个运算对象左右两边的两个运算符优先级相同,则根
据结合性判断先进行哪个运算,自左自右结合性的先算左边的运算符,自右自左的先算右边的运算符。

强制类型转换
格式:(类型名)表达式。将后跟的表达式的值的数据类型转换为与
圆括号内的类型名一致的类型。注意类型名一定要用()括起来。
算术表达式
:+,-,*,/,%(求余)
,如3+3*6-9/2
:跟我们小学时学的一样,就是表达式的计算结果
,故1/3得到的值是0
%3结果为2,想想小学除法,求余得到的是余数不是商。
赋值表达式
:=,+=,-=,*=,/=,%=
:变量=表达式,如x=3+6,x+=6-9,x+=x*=3+4注意等
号左边只能是变量:.
:以/=为例:x/=表达式等价于x=x/(表达式)
:=号左边的变量最终的值
关系表达式
:<,>,<=,>=,==(等于),!=(不等于)
,如3>=4,2==a
:满足相应运算符所指定的关系的值为1,否则为0
逻辑表达式
:&&(且),||(或),!(非)
,如3&&4,x||!y
:满足相应运算符所指定的关系的值为1,否则为0
||或运算时,若||左边的表达式值为1,则不再对右边的表达
式进行运算。
&&且运算时,若&&左边的表达式值为0,则不再对右边的表达
式进行运算。
逗号表达式
:,
,如3+4,a=9,8*a
:组成逗号表达式的各个表达式中的最后一个的值,如上例为8*a
题目:P7—11~17P8—18~33
五、输入输出函数
scanf(“格式控制串”,变量地址表列);
如scanf(“%d%c%d”,&a,&ch,&b);scanf(“%4f”,&x);
注意:
,但不能控制输入几位小数给变量,如不能写成scanf(“%”,&x);
,即要么是&+变量名或数组元素名的形式,要么就是一个数组名或指针变量名,如int*p,a;p=&a;scanf(“%d”,p);

“,”隔开如scanf(“%d,%c,%d”,
&a,&ch,&b);那输入时也要用逗号隔开,如此例输入时应:3,+,5
(“%d%d”,&a,&b);则输入时应:35;
(“%d%c%d”,&a,&ch,&b);则输入时应3+5,若写成
3+5则a=3,ch=‘’(空格),b=任意值(自己上机运行看看结果)
printf(“格式控制串”,输出项表列);
如floatx=;printf(“%”,x);此处的意思是将x打印出来,且占8列,
保留两位小数。自己上机运行看看效果。
常用格式符汇总:
i.%d:输入输出整型数据,%ld:输入输出长整型数据
ii.%c:输入输出字符型数据
iii.%f:输出单(双)精度浮点型数据,输入单精度型数据。%lf:输入双精度型数据
iv.%s:输入输出一个字符串,用printf输出字符串时,输出项书写时可
为字符串常量,或字符数组名。如printf(“%s”,”hello”);或charstr[10]=”:.
hello”;printf(“%s”,str);
v.%u:输入输出无符号整型,%o:输入输出八进制数,
%x:输入输出十六进制数
getchar();
函数调用后返回用户输入的一个字符,故需再定义一个变量来存放这个字符,即使用时应charc;c=getchar();意思就是接收用户输入的一个字
符,并将其赋值给变量c。
putchar(字符常量或字符变量名);
如charc=’A’;putchar(c);或putchar(‘A’);都会向屏幕输出字符A。
六、C语言的语句
表达式语句:由表达式末尾加上分号构成。
函数调用语句:由函数调用表达式加上分号构成。
空语句:;
选择结构语句:if语句switch语句
循环语句:for语句while语句dowhile语句
复合语句:用花括号{}将以上任意语句括起来构成一条复合语句。
七、C程序的基本结构
voidmain()
{声明部分:用来定义变量和声明自定义函数的原型,需以“;”结尾,如
intx;
执行语句部分:第六点里介绍的各种语句,如x=3;printf(“%d”,x);
}
main函数外可写自定义函数。如
intmax()
{
return0;
}
八、选择结构语句
if(表达式)语句1else语句2
如果if语句的圆括号内的表达式值为非0,则执行语句1,值为0则执行语
句2。
,if语句执行的实质是判断表达式的值是否为
0来决定执行语句1还是语句2。另外请在此处表达严重关切,不管是
高手还是菜鸟经常会把判断两个数相等的符号“==”写成了一个等号
“=”成为了赋值运算,这样的写法不会引发编译错误,但结果会与原
意大大不同,所以考试前请再三提醒自己。
,若要跟多条语句,切记用一对{}
括起来,构成复合语句;也不要随便在圆括号后加“;”,因“
;”构成一条空语句,这会使后面跟的语句1不再属于if语句的组成
部分。
:.
:if(表达式)语句
:if(表达式)语句1else语句2
(重点掌握):
if(表达式1)语句1
elseif(表达式2)语句2
elseif(表达式3)语句3

else语句n
条件运算符表达式1?表达式2:表达式3
若表达式1的值非0,则取表达式2的值做为整个表达式的值,否则取表达
式3的值为整个表达式的值。如3>4?1:2该表达式的值为2
switch语句
switch(表达式)
{
case表达式1:语句
case表达式2:语句

case表达式n:语句
default:语句
}
语句执行过程:先计算表达式的值,然后判断该值与表达式1到表达式n
中的哪个相等,若与表达式i的值相等,则执行表达式i后的所有语句,当
遇到break;语句时结束整个switch语句的执行。表达式1到表达式n的
值都不相等的情况下执行default后跟的语句。每个case后可跟多条语句。
九、循环结构
for循环语句
for(表达式1;表达式2;表达式3)循环体语句
语句执行过程:

,若为0,语句执行结束,若不为0,进入
步骤3
(需注意的是循环体语句只能有一个语句,若要包含
多个语句要用一对{}括起来,构成一条复合语句,此处也不要随便加
上“;”,因一个“;”可构成一条空语句,这会使得后面真正的循
环体语句不属于for循环语句的部分)。进入步骤4
,然后重新进入步骤2
while循环语句dowhile循环语句
(表达式)循环体语句
执行过程:
,若是进入步骤2,否则结束语句执行。
,重新回到步骤1。
(表达式);
执行过程::.
,进入步骤2
,若是重新回到步骤1,否则结束语句执行。
这里要注意的地方跟for语句一样,即循环体语句只能有一个语句,若要
包含多个语句要用一对{}括起来,构成一条复合语句,此处也不要随便加
上“;”,因一个“;”可构成一条空语句,这会使得后面真正的循环体
语句不属于while循环语句的部分,另外dowhile循环的while(表达式)
后是要加“;”的。
break语句:放在循环体内实现的功能是结束其所在的那层循环的执行。
十、数组
十一、
定义格式:数据类型数组名[整型常量];如inta[10];定义了一个整型
数组,数组名为a,这个数组含有10个元素。
引用数组元素:格式:数组名[下标]切记下标值从0开始。下标可为常
量,表达式,变量等,如inti=3;a[0]=5;a[3*2]=9;a[i]=7;
初始化:数据类型数组名[整型常量]={数据表列};将数据表列的各个值
依次赋值给数组的各个元素。如inta[5]={0,1,2,3,4};则数组a各元素a[0]
到a[4]的值分别为0,1,2,3,4
遍历数组元素
数组定义后,我们不能对数组进行整体的操作,如inta[10];不能用a=3这
样的操作将数组的各元素都赋值为3;而只能一个一个元素的进行赋值,如
a[0]=3;a[1]=3;a[2]=3…a[9]=3;当然此时我们就可以借助于一个for循环来
控制下标的变化从而对数组的各个元素进行赋值
for(i=0;i<10;i++)a[i]=3;
当然这只是用for循环遍历数组各元素的最简单的例子,一般考试考的是找
出数组元素的某种特性的极值,比如最大值,最小值,或对数组各元素进行排序,这时我们就可以使用for循环来遍历数组的各元素,然后在当前循
环中得到一个元素再对其进行处理。如i=2时访问到的元素是a[2],你就可
以问问它,你是不是最小值啊。
整型数组
inta[10];整型数组里的各个元素存放的是整数。a[3]=3;
字符型数组
charstr[20];字符型数组里的各个元素存放的是字符。str[3]=’A’;
十二、字符串函数
gets(字符数组名或字符指针变量);
如charstr[10],*str2;str2=str;则gets(str);或gets(str2);都是接收用户输
入的字符串如“ABC”存入到字符数组str中
puts(字符数组名或字符指针变量或字符串常量);
如charstr[10]=”china”;char*str2;str=str2;则puts(str);或puts(str2);
或puts(“china”);都会在屏幕上打印出china:.
strlen(字符数组名或字符指针变量);字符串测长函数
charstr[20]=”helloworld!”;
intlen;len=strlen(str);得出的结果是len的值为12
strcat(字符串1的地址,字符串2的地址);connection
将字符串2的内容连接到字符串1的尾部。
charstr1[20]=”ABC”,str2[20]=”xyz”;
strcat(str1,str2);
则程序运行的结果是str1内存放的字符串变为ABCxyz,当然str2存放
的字符串还是xyz。
strcmp(字符串1的地址,字符串2的地址);comparative
比较串1和串2哪个比较大。比较大小的依据是,两个字符串从左往右
相应位置上第一个不相等的字符ASCII码值之差。
charstr1[20]=”ABCE”,str2[20]=”ABDE”;
inti;
i=strcmp(str1,str2);
第一个不相等的字符为str1的‘C’和str2的‘D’,而二者相差-1,故-
1做为strcmp函数执行的结果返回到被调用的位置,该位置位于赋值表
达式内,故将其值赋值给i,即此时i的值就是-1.
strcpy(字符串1的地址,字符串2的地址);copy
将字符串2的内容复制到字符串1内。
charstr1[20]=”ABC”,str2[20]=”xyz”;
strcpy(str1,str2);此时str1的内容为”xyz”,当然str2的内容没变
strcpy(str1,”uvw”);此时str1的内容又变成了“uvw“。
十三、函数
函数定义
函数类型函数名(形式参数列表)
{
内部变量定义和声明部分
执行语句
}
如:
intmax(intx,inty)
{intz;
z=x>y?x:y;
return(z);
}
注意点:
,即要与return语句后跟的表达式的值的类型一
致。若函数类型为void则说明该函数无返回值,即函数体里不能出现return
语句。
,而且如果同时要定义多
个,应在每个前面都分别指定类型名,而不能写成intx,y;
,在开头可定义所需要的变量,后面跟:.
上一堆执行语句。
函数调用流程
以上面的函数为例,在main函数进行调用:
voidmain()
{inta,b,c;
scanf(“%d%d”,&a,&b);
printf(“%d”,max(a,b));或c=max(a,b);printf(“%d”,c)以上两种方法都会在屏幕中打印出a,b间的较大值。
调用函数的格式函数名(实际参数列表);调用的时候像什么函数类型,形式参
数的类型就不要加上去了。max(a,b)中max就是函数名,写上变量名a,b是实
际参数列表,执行这个调用语句时,会先把a,b的值给相应位置的形式参数即
执行了x=a,y=b这样的操作,然后开始执行max函数的函数体的语句。当max
函数体里执行到一个return语句时,则max函数结束执行,将return后的表
达式的值返回给main函数调用max函数的那个位置,即若上面a=3,b=5则
max(a,b)return后的表达式的值应该是5也就是说执行完max后把5返回到调
用max的位置可看成printf(“%d”,5);或另一种解法的c=5。
}
十四、指针
指针变量的声明:类型名*指针变量名;
通过指针变量访问它所指向的普通变量的值
先将普通变量的地址赋值给指针变量,再通过指针运算符*得到普通变
量的值。
int*p,x,y;
x=3;
p=&x;
则printf(“%d”,*p);会打印出3即x的值
y=*p;则y的值变为3
*p=5;则x的值变为5
指针变量加上(减去)一个位移的效果
若指针变量存入的是数组元素的地址,则其加一减一得到的是那个数组
元素下一个或前一个元素的地址。
inta[10];p=&a[3];
*p得到的是a[3]的值。
若p++;此时p存放的是a[4]的地址&a[4];*p得到的就是a[4]的值。
或p--;此时p存放的是a[2]的地址&a[2],*p得到的就是a[2]的值。
行指针
,二维数组每行都有自己的地址,第0行
地址用数组名表示,第i行地址为数组名+i;而想要得到二维数组
里一个元素的地址,必需先得到其所在行的地址,然后再由那个地址得到元素的地址,比如说inta[3][4];定义了一个二维数组,该二维
数组第0行的地址为a,第1行的地址为a+1,第2行的地址为a+2,
想从行的地址得到元素的地址,需在行地址前加上指针运算符“*”,
即*a就是第0行首个元素的地址即a[0][0]的地址,而a[0][2]的地址就:.
是在a[0][0]的地址基础上加上位移量2,即*a+2(既一维数组就用这
个表示),然后想得到a[0][2]这个元素的值呢就再加上一个指针运算符
“*”,即*(*a+2),类似地,想得到a[2][2]这个元素的值呢就是*(*(a+2)
+2)(二维数组就用这个表示)
:类型名(*变量名)[数组长度];
如int(*p)[4]相当于一个二维数组,a[3][4];p=a;此时就可把p当成a来
用,用法同上所述。
判断是否合法访问数组元素:若是指针法访问,判断指针后跟的是否地址;若是下标法访问,判断下标有无越界。
函数指针:函数名即为函数的地址(指针)
:类型名(*变量名)(形参列表);如int(*p)();
:指针变量=函数名;设有个函数其函数名为max,则要将该函数
的地址给p的话只要执行如下语句即可p=max;
指针数组:指针数组的数组元素都是指针变量,是用来存放变量的地址的,
定义格式为类型名*变量名[数组长度];如int*p[10];
指向指针的指针:指针变量也是一种变量,故在内存中也有对应的一个地
址,而要存放指针变量的地址,就要求助于用来存放指针变量的地址的指
针变量,定义格式类型名**变量名;如int*p1;int**p2;inta=3;可进行
赋值p1=&a;p2=&p1;则a、*p1和**p2的值都是3.
十五、宏定义
无参宏定义#define标识符值定义后,出现所定义的标识符的地方
都将以定义时指定的值来代替。
#defineM2+3
main()
{intx;
x=M*M;则x的值为2+3*2+3=11若想得到的结果是(2+3)*(2+3)则
定义时也写成这样#defineM(2+3)
}
注意#define、标识符、值之间都要用空格隔开,且宏定义结尾不需加
分号。
带参宏定义#define标识符(参数表)值
#defineS(x,y)x*y
main()
{inta=3,b=4,c=5,d=6;
printf("a*b=%d\n",S(a,b));此时会打印出a*b=12
printf("a+b*c+d=%d\n",S(a+b,c+d));此时会打印出a+b*c+d=29,
带参宏定义执行时是将a+b这样一个表达式代替x,c+d这样一个表达
式代替y,所以S(a+b,c+d)进行的是a+b*c+d的运算,而不是将a+b的
值给x,c+d的值给y然后再做x*y,这点跟函数调用传递参数是不一
样的。
}
自定义类型名typedef:对已存在的类型名取一个外号。:.
:typedef原类型名新类型名;
;则inta,b;等价于INTEGERa,b;
[10];则inta[10];等价于NUMa;a即为一个有10
个元素的数组的数组名。
*INTEGER;则int*a,*b;等价于INTEGERa,b;
十六、结构体,共用体,枚举类型
结构体

struct结构体名
{类型成员1;
类型成员2;
……
类型成员n;
}变量名;

structstudent
{longnum;
charname[10];
intscore[4];
}st1;定义类型时同时定义变量
structstudentst2;定义类型后,用类型名定义变量
还有一种
struct
{longnum;
charname[10];
intscore[4];
}st3;不给类型名,直接定义变量
:各成员各占字节数之和,如以上st1,st2,st3
的字节数皆为10+20+2*4=38
:structstudenta={20030001,"张三",70,75,80,85};
:
structstudenta[3]={{20030001,"zhang",89,90,91,92},
{20030002,"liu",68,69,70,71},
{20030003,"li",57,58,59,60}};


:
(*结构体指针名).成员或结构体指针名–>成员名
structstudent*st;st=&st1;st->num或(*st).num
共用体

union共用体名
{类型成员名1;:.

类型成员名n;
};
变量的定义与结构体类似,也有三种方法。
uniondata
{
inti;
charch;
floatf;
}d1;定义类型时同时定义变量
uniondatad2;定义类型后,用类型名定义变量
union
{
inti;
charch;
floatf;
}d3;不给类型名,直接定义变量
:各成员所占字节数的最大值,如上d1,d2,d3所
占字节数皆为4.(单精度浮点型变量所占字节数最多为4).


:
(*共用体指针名).成员或共用体指针名–>成员名
uniondata*dd;dd=&d1;dd->i或(*dd).i
:由于共用体各成员共用同一段内存区,故同一时刻
只有一个成员的值是正确的。=5;=’a’;
不是5了,而是其他值了,’a’
枚举类型
:
enum枚举名{枚举元素名1,枚举元素名2,…,枚举元素名n};
:
默认值分别为0、1、…、n-1。枚举元素的值也可在定义时重指定,
对于没有指定值的元素,按顺序加1
iii.
如enumweekday{sun=7,mon=1,tue,wend,thur,fri,sat};则sun值为
7,mon值为1,tue值为2,wend值为3,thur值为4,fri值为5,sat
值为6
十七、TurboC的使用
菜单激活:F10
菜单切换:左右方向键在不同菜单间切换,上下方向键在同一个菜单不同选项间切换。
载入文件:两种方法:,直接将其拉到TurboC快
捷方式上;:.
运行程序:ctrl+F9
看程序运行结果:alt+F5
进入编辑状态:菜单Edit
保存:F2
插入状态切换:Insert键

最近更新

轨道车辆减重技术发展趋势分析 35页

2025年四川职业技术学院单招职业技能测试题库.. 42页

2025年壶关县招教考试备考题库附答案解析 31页

骨细胞衰老研究 35页

2025年天津工艺美术职业学院单招职业适应性考.. 45页

高端制造数字模型库 35页

绿色供应链管理中的国际合作与交流 30页

2025年宁波职业技术大学马克思主义基本原理概.. 12页

2025年安徽警官职业学院马克思主义基本原理概.. 13页

2025年宣化科技职业学院马克思主义基本原理概.. 13页

网络攻击检测与防御机制研究 29页

2025年山西医药学院马克思主义基本原理概论期.. 13页

2025年岫岩县幼儿园教师招教考试备考题库含答.. 31页

2025年平顶山学院马克思主义基本原理概论期末.. 12页

2025年广州应用科技学院马克思主义基本原理概.. 12页

2025年延庆县幼儿园教师招教考试备考题库含答.. 31页

2025年徐州生物工程职业技术学院马克思主义基.. 12页

2025年新河县招教考试备考题库及答案解析(必.. 31页

2025年晋城职业技术学院单招职业技能考试题库.. 44页

2025年松原职业技术学院单招职业技能考试模拟.. 44页

2025年桑日县幼儿园教师招教考试备考题库含答.. 31页

2025年武汉传媒学院马克思主义基本原理概论期.. 13页

2025年永和县幼儿园教师招教考试备考题库及答.. 31页

2025年江西医学高等专科学校马克思主义基本原.. 13页

2025年河北化工医药职业技术学院单招职业倾向.. 44页

2025年河南建筑职业技术学院马克思主义基本原.. 12页

2025年波密县幼儿园教师招教考试备考题库及答.. 30页

2025年浑源县招教考试备考题库及答案解析(必.. 31页

2025年淮滨县招教考试备考题库附答案解析(必.. 30页

2025年湖北省(134所)马克思主义基本原理概论.. 13页