志在指尖
用双手敲打未来

c语言基础知识(必背)

c语言基础知识

良好习气之规范
在写C言语程序的时分为了书写清晰、便于阅读、便于了解、便于维护,在编写程序时应遵从以下规矩:
1、一个阐明或一个句子占一行,例如:包括头文件、一个可履行句子结束都需求换行;
2、函数体内的句子要有显着缩进,通常以按一下Tab键为一个缩进;
3、括号要成对写,假如需求删去的话也要成对删去;
4、当一句可履行句子结束的时分末尾需求有分号;
5、代码中所有符号均为英文半角符号。
以一个比方来看:
程序解说——注释
注释是为了使他人能看懂你写的程序,也为了使你在若干年后还能看得懂你从前写的程序而设定的。注释是写给程序员看的,不是写给电脑看的。所以注释的内容,C言语编译器在编译时会被主动忽略。C言语注释办法有两种:
多行注释:/*注释内容*/
单行注释://注释一行
以下是运用多行注释与单行注释的比方:
c言语的命名
编程时给变量或者函数起的名字便是标识符,就比方咱们慕课网的每一位童鞋都有名字,名字便是这位童鞋的标识符。C言语的标识符是不能够随便起名字的,必须恪守必定的规矩。C言语规定,标识符能够是字母(A~Z,a~z)、数字(0~9)、下划线_组成的字符串,并且第一个字符必须是字母或下划线。在运用标识符时还有留意以下几点:
(1)标识符的长度最好不要超过8位,由于在某些版别的C中规定标识符前8位有效,当两个标识符前8位相一起,则被认为是同一个标识符。
(2)标识符是严厉区别大小写的。例如Imooc和imooc是两个不同的标识符。
(3)标识符最好选择有意义的英文单词组成做到”见名知意”,不要运用中文。
(4)标识符不能是C言语的关键字。想了解更多C言语关键字的知识,请查阅WIKI。
例如:
变量及赋值
变量便是能够变化的量,而每个变量都会有一个名字(标识符)。变量占据内存中必定的存储单元。运用变量之前必须先界说变量,要区别变量名和变量值是两个不同的概念。就比方:住在房间里的客人与房间号是两个不同的概念。
变量界说的一般方法为:数据类型变量名;
多个类型相同的变量:数据类型变量名,变量名,变量名…;
变量名和标识符的命名规范完全相同。%d在后面会有详细解说
留意:在界说中不允许连续赋值,如inta=b=c=5;是不合法的。
变量的赋值分为两种方法:1.先声明再赋值2.声明的一起赋值,例如:
根本数据类型
在咱们玩游戏的时分,游戏中的人物是有类型的,有敏捷型、力气型、法术型等等。同样C言语中的数据也是有类型的,C言语中,数据类型可分为:根本数据类型,构造数据类型,指针类型,空类型四大类。如图所示:
这儿咱们先给大家解说根本数据类型中最简略也是最常用的整型、实型与字符型。
整型数据是指不带小数的数字。日子中有很多信息合适运用整型数据来表明,比方:人的年龄、班级的人数、书的总页数等等。因而整型的类型比较多:
注:int、shortint、longint是依据编译环境的不同,所取规模不同。而其中shortint和longint至少是表中所写规模,可是int在表中是以16位编译环境写的取值规模。另外c言语int的取值规模在于他占用的字节数,不同的编译器,规定是不一样。ANSI规范界说int是占2个字节,TC是按ANSI规范的,它的int是占2个字节的。可是在VC里,一个int是占4个字节的。
浮点数据是指带小数的数字。日子中有很多信息合适运用浮点型数据来表明,比方:人的体重(单位:公斤)、商品价格、圆周率等等。由于精度的不同又分为3种:
注:C言语中不存在字符串变量,字符串只能存在字符数组中,这个后面会讲。
使命
小明今年15岁,身高只有162CM,可是体重已经有82.5公斤了,小明是否属于肥胖儿童呢?咱们如何用程序描绘这个情形呢?
在右边编辑器中
在第4、5、6行中将变量的类型补全
运转成果:
格局化输出句子
格局化输出句子,也能够说是占位输出,是将各种类型的数据依照格局化后的类型及指定的方位从核算机上显现。这样做的好处,是有利于核算机能够精确的将咱们所要类型数据给咱们。
其格局为:printf(”输出格局符”,输出项);
C言语中的常用格局化符:
当输出句子中包括普通字符时,能够采用一下格局:
printf(”普通字符输出格局符”,输出项);
例如:
输出成果为:a=10
假如要输出多个变量的并指定变量的方位时分,格局符还能够连用,变量之间需求用逗号隔开,如:
输出成果为:整数:10,小数:7.560000,字符:c
留意:格局符的个数要与变量、常量或者表达式的个数一一对应json
使命
小明的个人信息如下:
不行改动的常量
在程序履行过程中,值不发生改动的量称为常量。C言语的常量能够分为直接常量和符号常量。
直接常量也称为字面量,是能够直接拿来运用,无需阐明的量,比方:
整型常量:13、0、-13;
实型常量:13.33、-24.4;
字符常量:‘a’、‘M’
字符串常量:”Iloveimooc!”
下面的代码别离打印这四种直接常量:
在C言语中,能够用一个标识符来表明一个常量,称之为符号常量。符号常量在运用之前必须先界说,其一般方法为:
#define标识符常量值
符号常量的标明符一般习气运用大写字母,变量的标明符一般习气运用小写字母,加以区别。下面是一个运用符号常量的小比方:
运算成果为:圆周率:3.140000
留意:常量是不行改动的
主动类型转化
有这么一个词叫“狸猫换太子”,变量的数据类型就存在这样的状况。数据类型存在主动转化的状况,比方:
主动转化发生在不同数据类型运算时,在编译的时分主动完成。主动转化遵从的规矩就比方小盒子能够放进大盒子里面一样,下图表明了类型主动转化的规矩。
char类型数据转化为int类型数据遵从ASCII码中的对应值,ASCII码请检查WIKI。
注:字节小的能够向字节大的主动转化,但字节大的不能向字节小的主动转化
使命
小伙伴们这儿有个字符型的变量c,咱们将它主动转化为整型和实型来看看作用,你会惊呆的
在右侧编辑器中
第5、6、7行中别离将c赋给各变量
运转成果:
97
97.000000
97.000000
强制类型转化
强制类型转化是经过界说类型转化运算来实现的。其一般方法为:
(数据类型)(表达式)
其作用是把表达式的运算成果强制转化成类型阐明符所表明的类型,例如:
留意:double类型的数据的格局符%f或%lf
输入成果:
6.777000
6
在运用强制转化时应留意以下问题:
1、数据类型和表达式都必须加括号,如把(int)(x/2+y)写成(int)x/2+y则成了把x转化成int型之后再除2再与y相加了。
2、转化后不会改动原数据的类型及变量值,只在本次运算中临时性转化。
3、强制转化后的运算成果不遵从四舍五入准则。
使命
小编在这出了一道题,考考童鞋们,如何使代码编辑器中的程序输出成果:num的整数部分是2
在代码编辑器中,第5即将num强制转化为整型
运算符
那么C言语中又有哪些运算符呢?
如下所示:
※算术运算符
※赋值运算符
※联系运算符
※逻辑运算符
※三目运算符
算术运算法
C言语根本算术运算符如下表:
除法运算中留意:
假如相除的两个数都是整数的话,则成果也为整数,小数部分省略,如8/3=2;而两数中有一个为小数,成果则为小数,如:9.0/2=4.500000。
取余运算中留意:
该运算只合适用两个整数进行取余运算,如:10%3=1;而10.0%3则是错误的;运算后的符号取决于被模数的符号,如(-10)%3=-1;而10%(-3)=1。
注:C言语中没有乘方这个运算符,也不能用×,÷等算术符号。
另:关于自增自减运算符,会在下一末节解说。
使命
依据输出提示,进行算术运算符的运用
在代码编辑器中
将7至11行的代码补全
运转成果如下
留意:取余运算中;运算后的符号取决于被模数的符号
自增与自减运算符
自增运算符为“++”,其功用是使变量的值自增1;自减运算符为“–”,其功用是使变量值自减1。它们常常运用在循环中。自增自减运算符有以下几种方法:
留意:无论是a++仍是++a都等同于a=a+1,在表达式履行结束后a的值都自增了1,无论是a–仍是–a都等同于a=a-1,在表达式履行结束后a的值都自减少1。
请剖析如下代码输出成果:
小伙伴们,别急着看运转成果,自己先想想看成果是什么?
运转成果:
练习题
留意:%、*、/是同一优先级的算术运算符
赋值运算符
在前面的末节中触摸过简略的赋值运算符“=”,如:
那么C言语中的赋值运算符又是什么呢?
C言语中赋值运算符分为简略赋值运算符和复合赋值运算符,之前咱们已经触摸过简略赋值运算符“=”号了,下面讲一下复合赋值运算符:
复合赋值运算符便是在简略赋值符“=”之前加上其它运算符构成,例如+=、-=、*=、/=、%=。
看一个小比方:
剖析:界说整型变量a并赋值为3,a+=5;这个算式就等价于a=a+5;将变量a和5相加之后再赋值给a
留意:复合运算符中运算符和等号之间是不存在空格的。
联系运算符
下面是C言语中的联系运算符:
联系表达式的值是“真”和“假”,在C程序用整数1和0表明。如:
其成果为:
1
0
留意:>=,<=,==,!=这种符号之间不能存在空格。
逻辑运算符
下面咱们看一下C言语中的逻辑运算符:
三木运算符
C言语中的三目运算符:“?:”,其格局为:
表达式1?表达式2:表达式3;
运算符大比拼之优先级比较

c语言基础知识必背

C言语是当代人学习及日子中的必备基础知识,应用非常广泛,下面为大家带来C言语基础知识整理总结,C言语零基础入门绝对不是天方夜谭!
算法结构:
一、次序结构、选择结构、循环结构;
二、循环结构又分为while型、do-while型、for循环结构;
三、程序流程图;
结构化程序规划办法:
(1)自顶向下;(2)逐渐细化;(3)模块化规划;(4)结构化编码。
数据类型:
常量:常量包括字面常量、直接常量和符号常量;
变量:C言语规则标志符只能由字母、数字和下划线三种字符组成,且榜首个字符必须是字母或许下划线;必须压榨先界说后运用;每一个变量被界说以确认类型后,在编译时就能为其分配相应的存储单元;
整数类型:整数常量有十进制、八进制和十六进制;“%d”
整形变量:数据在内存中寄存方法是以二进制方法寄存;有int型、shortint型和longint型,无符号整型变量的规模是-32768—32767,有符号型为0~65535.一般把long界说为32位,把short界说为16位,int能够是32位也可认为16位,这都首要取决于机器字长。
实型常量的表明办法:(1)十进制,0.0;(2)指数方法,123e3
实型变量:实数型数据在内存中的寄存方法,一般在内存中占4个字节,分红整数部分和小数部分寄存。实型变量分为float型、double型longdouble型。实型数据会存在舍入误差。
实型常量的类型:C编译体系将实型常量作为双精度来处理。
字符型数组:(一)字符常量:转义字符(\n——换行,\t——tab,\r——回车,\f——换页,\b——退格,\ddd——1到3位8进制的数代表的字符)
(二)字符变量:字符数据存储方法实际是以ASCII码存储。“%c”
字符串常量:双撇号括起来的一系列字符序列。
C的运算符有以下几种:
1、算术运算符(+-*/%)结合方向自左向右
2、联系运算符(><==>=<=!=)
3、逻辑运算符(!&&||)
4、位运算符(<<>>~|^&)
5、赋值运算符(=及符号扩展赋值运算符)
6、条件运算符(?:)
7、逗号运算符(,)
8、指针运算符(*&)
9、求字节运算符(sizeof)
10、强制类型转换运算符((类型))
11、分量运算符(.->)
12、下标运算符([])
13、其他
操控句子:
完成必定的操控功能。
1、if()~else~
2、for()~
3、while()~
4、do~while()
5、continue
6、break
7、switch
8、goto
9、return
字符数据的输入输出:
1、putchar()输入字符变量
2、getchar()只能接受一个字符
格局输入输出:
1、printf(%d—整型,%c—字符型,%ld,%md,%o,%u,%s,%-m.nf,%e,%g)
2、scanf(格局操控,地址列表)
数组
一维数组的界说:类型阐明符数组名【常量表达式】;先界说后引证;一维数组初始化时能够只对一部分元素初始化,在对悉数数组元素初始化的时候能够部规则长度;可是若被界说的数组长度与提供的初始值不一样时,则数组长度不能省掉。
二维数组的界说:类型阐明符数组名【常量表达式】【常量表达式】C言语中寄存二维数组是先寄存榜首行的元素,紧接着是第二行,其实也是以一维的方法寄存。假如初始化时能指定一切元素的初始值,榜首维巨细能够省掉,可是第二维不能省掉。
字符数组:界说和初始化跟数组差不多,只是需求加单引号。字符和字符串完毕标志,C言语规则,以‘\0’代表。
字符串处理函数:
1、puts()将一个字符串输出到终端
2、gets()从终端输入一个字符串到字符数组,而且得到一个函数值。
3、strcat()链接两个字符数组中的字符串。
4、strcpy()字符串复制函数。
5、strcmp()比较字符串效果。
6、strlen()测验字符串长度的函数不包括“\0”
7、strlwr()将字符串中的大写字母转换为小写字母。
8、strupr()将字符串中的小写字母转换为大写字母。
函数
(1)一个源程序由多个函数组成。
(2)C程序的履行从main()函数开始;
(3)一切函数都是平行的;
(4)函数分类;能够分为规范和自界说,还能够分为有参函数和无参函数。
函数界说的一般方法:
(1)类型标志符函数名()
{
声明部分
句子
}
(2)类型标志符函数名(方法参数列表)
{
声明部分
句子
}
关于形参和实参的阐明:
(1)在界说函数中指定的形参,在未出现函数调用时,他们并不占用内存中的存储单元,只要发生调用时,才会分配内存。
(2)实参能够是常量、变量或许表达式;有时传递的时地址;
(3)在被界说中,形参必须指定类型;
(4)实参与形参的类型应相同或赋值兼容;
(5)C言语规则,实参变量对形参变量的数据传递是“值传递”,即单向传递,只要实参传递给形参,而不能由形参传递给实参。
函数的返回值:
期望经过函数调用使主调函数得到一个确认的值。(1)函数的返回值是经过函数中的return句子获取的。(2)函数值的类型;(3)假如函数值的类型和return句子中表达式的值不一样,则以函数类型为准。(4)假如调用函数中没有return句子,并不带回一个确认的用户需求的值,函数不是不带回值,而只是不带回有用的值,带回一个不确认的值。(5)如不需求带回任何值,用void。
函数的调用:
调用方法1、函数句子;2、函数表达式;3、函数参数。
被调用的函数的声明:
一个函数调用另一个函数所具备的条件:
1、首先被调用的函数必须是现已存在的函数;
2、假如运用库函数,一般应该在本文件开头用#include指令将调用有关库函数时在所需求用到的信息“包括”到本文件中。.h文件是头文件所用的后缀。
3、假如运用用户自己界说的函数,而且该函数与运用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。
4、假如被调用的函数界说出现在主调函数之前能够不用声明。
5、假如已在一切函数界说之前,在函数的外部已做了函数声明,则在各个主调函数中不用多所调用的函数在做声明。
局部变量和全局变量:
(一)局部变量在一个函数内部界说的变量是内部变量,它只是在本函数规模内的有效,主函数也不能运用其它函数中界说的变量;不同函数中能够运用相同的姓名的变量,他们代表不同的对象,互不搅扰;方法参数也是局部变量;在一个函数内部,能够在复合句子中界说变量,这些变量只在本复合句子中有效,这种复合句也能够称为“分程序”或“程序块”;(二)全局变量,在函数之外界说的变量称为外部变量,全局变量能够添加函数间数据联系的途径,一般不再必要时不要运用,他在程序的悉数履行进程中占用存储单元,是函数的通用性,运用全局变量会使程序的清晰性下降。还要留意若果同一源文件中,外部变量和局部变量同名,则在局部变量效果规模内,外部变量被“屏蔽”,不起任何效果。
变量的存储类别:
(变量值存储时间)动态存储方法,在程序运转期间进行分动态的分配存储空间的方法,静态存储方法是指在程序运转期间分配固定的存储空间的方法;存储空间分为程序区、静态存储区和动态存储区;全局变量悉数放在静态存储区中,程序开始时分配空间,完毕时释放;动态存储区中寄存以下数据:1、函数方法参数;2、主动变量;3、函数调用时的现场保护和返回地址;在C言语中每个变量和函数都有两个属性,是数据类型和数据存储类型,存储类别是数据在内存中存储的方法。
存储方法分为静态和动态存储类,具体包括有四种:主动的(auto),静态的(static),寄存器的(register),外部的(extern),假如不加以声明,就自认为是auto型就会主动分配存储空间归于动态存储方法。Static声明局部变量是在函数调用完毕后不消失而保存原值,即占用存储单元不释放,在下一次调用该函数时,该变量已有值,便是上次函数调用完毕时的值。其间需求阐明的是在界说局部变量不赋初值的话,则静态局部变量编译时主动赋值为0或许空字符,尽管静态局部变量在函数调用完毕后依然存在,可是其他函数不能引证它的。静态局部变量首要用在当初始化后,变量只是被引证而不改变其值。Register变量是C言语中答应将局部变量的值放在CPU中的寄存器中需求时直接从寄存器中取出来参与运算,不用再到内存中提取,可是计算机体系中寄存器数量有限,不能任意界说任意多的存储器,局部静态变量不能界说为寄存器变量。Extern声明外部变量,用以扩展外部变量的效果域。在一个文件中,假如界说之前的函数想引证该外部变量,则应该在引证之前用关键字extern对该变量做外部变量声明。在多文件中,也能够选用extern声明的办法进行外部变量声明。有时期望某些局部变量只限于被本文件引证,而不能被其他文件引证,这时就能够选用在界说外部变量时外加一个static,这在程序模块化规划中加强了通用性。Static来声明一个变量的效果有二个,一个是在声明对局部变量时。则为该变量分配的空间在整个程序履行期间一直存在;一个是在对全局变量声明中,该变量的效果域仅限于本文件模块操作。留意:这些办法同样适用于函数的声明。
指针:
指针是指向一片内存空间的地址,指针变量是变量,是寄存一片内存空间首地址的变量,我们一般所说的指针都是指针变量。
指针的界说及赋值:
类型阐明*变量名列如int*p;
区别int*p=NULL与*p=NULL
int*p=NULL;//界说指针变量p,而且同时将p的值设置为0x00000000,不是把*p的值设置为0x0000000,这个进程叫做初始化
int*p;*p=NULL;//界说指针变量p,将*p的值设置为NILL,即给p所指向的内存赋值NULL,可是p所指的内存可能是不合法的,编译可能会显现内存拜访错误,那么做出如下修正,给它一块合法的内存。
inti=10;int*p=&i;*p=NULL;//这时i中的值由10变成了0,而p值本身没变,即内存地址没有改变
指针的巨细:
int*P;sizeof(p);//指针的巨细根据计算机的位数确认,32位机巨细为4个字节,64位机巨细为8个字节。
指针运算:
需求留意的是指针的类型,+1加的是一个指针类型的巨细。
inta[10];int*p=&a;//+1,加了sizeof(int)*1个字节,而不是加sizeof(int[10])*1个字节
指针的运用类型
指针方法
数组方法:
inta[10];int*P=a;
p[0]=1;//指针的数组方法
*(p+1)=2;//指针的指针方法
经过指针修正内容的汇编进程
1.找到指针变量的地址
2.经过指针变量的地址,找到内容的地址
3.经过地址找到内容
4.修正内容

未经允许不得转载:IT技术网站 » c语言基础知识(必背)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载