2023年11月29日发(作者:)
⿊马程序员————C语⾔基本语法(关键字、标识符、注释
符、变量、Scanf函数)
第⼀讲 关键字
1、什么是关键字?
1) 关键字就是C语⾔提供的有特殊含义的符号,也叫做“保留字”
2) C语⾔⼀共提供了32个关键字,这些关键字都被C语⾔赋予了特殊含义
C语⾔关键字
auto局部变量(⾃动储存)break ⽆条件退出程序最内层循case switch 语句中选择项char 单字节整型数据
环
2、
关
键
continue 中断本次循环,并转向default switch 语句中的默认选择
do ⽤于构成do.....while循环语句const 定义不可更改的常量值
字
下⼀次循环项
的
extern 在其它程序模块中说明了
特
else 构成if.....else选择程序结构enum 枚举double定义双精度浮点型数据
全局变量
征
for 构成for循环语句goto 构成goto转移结构if 构成if....else选择结构float 定义单精度浮点型数据
long 长整型数据register CPU内部寄存的变量return⽤于返回函数的返回值int 基本整型数据
signed有符号数static定义静态变量short短整型数据
switch构成switch选择结构typedef重新定义数据类型 union联合类型数据struct定义结构类型数据
void定义⽆类型数据unsigned定义⽆符号数据
1)
关
键
sizoef计算表达式或数据类型的占
字
⽤字节数
全
部
volatile变量在程序中执⾏中可被while⽤于构成do...while或while
是
⼩
隐含地改变循环结构
写
2) 在开发⼯具或者智能⽂本编辑⼯具中会显⽰其他颜⾊
第⼆讲 标识符
⼀、概述
1、什么是标识符
1)标识符就是在程序中⾃定义的⼀些符号和名称。要跟关键字区分开来:关键字是C语⾔默认提供的符号,标识符是程序员⾃定义的
2、标识符的作⽤
1) 标识符,从字⾯上理解就是⽤来标识某些东西的符号,标识的⽬的就是为了将这些东西区分开来
2)其实,标识符的作⽤就跟⼈类的名字差不多,为了区分每个⼈,就在每个⼈出⽣的时候起了个名字
3)C语⾔是由函数构成的,⼀个C程序中可能会有多个函数,为了区分这些函数,就给每⼀个函数都起了个名称。函数的名称就是标识符的
⼀种。除了函数,以后还会学 到“变量”这个概念,变量的名称也是标识符
3、命名规则
1)命名规则(⼀定要遵守)
只能由26个英⽂字母的⼤⼩写、10个阿拉伯数字0~9、下划线_组成
严格区分⼤⼩写,⽐如test和Test是2个不同的标识符
不能以数字开头
不可以使⽤关键字作为标识符
2)命名规范(最好遵守)
尽量起个有意义的名称,⽐如⼀个完整的英⽂单词,别⼈⼀看这个名称就能才能这个标识符的作⽤。如果不懂英⽂,你也可以⽤拼
⾳,尽量不要起像abcde、sfsdfsdf等这类看起来没有意义的名称
如果标识符中含有多个单词,可以使⽤驼峰标识(除开第⼀个单词,后⾯每个单词的⾸字母都是⼤写):firstName、myFirstName,
或者使⽤下划线_来连接:first_name、my_first_name
4、常见的标识符命名错误
合法标识符 ⾮法标识符 注释
fromNo12 from#12 标识符中不能使⽤#符号
my_Boolean my-Boolean 标识符中不能使⽤“-”符号,应使⽤下划线“_”代替
Obj2 2ndObj 标识符不能使⽤数字开头
myInt int “int”是内建关键字
jack_rose jack&rose 符号“&”不能出现在标识符中
GUI G.U.I 标识符内部不能出现“.”分隔符
第三讲 注释符
1、什么是注释
1)注释是在所有计算机语⾔中都⾮常重要的⼀个概念,从字⾯上看,就是注解、解释的意思
2)注释可以⽤来解释某⼀段程序或者某⼀⾏代码是什么意思,⽅便程序员之间的交流。假如我写完⼀⾏代码后,加上相应的注释,那么别⼈
看到这个注释就知道我的这⾏代码是做什么⽤的
3)注释可以是任何⽂字,也就是说可以写中⽂
4)在开发⼯具中注释⼀般是⾖沙绿⾊
2、单⾏注释
1)单⾏注释以两个正斜杠开头,也就是以//开头,只能注释⼀⾏,从//开始到这⾏的结尾都是注释的内容
2)任何地⽅都可以写注释:函数外⾯、⾥⾯,每⼀条语句后⾯
3、多⾏注释
多⾏注释以/*开头,以*/结尾,/*和*/中间的内容都是注释
4、注释符的作⽤
1)被注释的代码不会参与编译
2)检查代码的作⽤
3)排除错误
5、注释符的嵌套现象
1) 单⾏注释可以嵌套单⾏注释、多⾏注释
1 int main ()
2 {
3 // 哇哈哈 // 呵呵呵
4 // /* fsdfsdf */ // sdfsdfsd
5 printf("单⾏注释可以嵌套单⾏注释、多⾏注释") ;
6 return 0 ;
7 }
2) 多⾏注释可以嵌套单⾏注释
1 int main ()
2 {
3 /*// 作者:MJ // 描述:第⼀个C语⾔程序作⽤:这是⼀个主函数,C程序的⼊⼝点*/
4 printf("多⾏注释可以嵌套单⾏注释") ;
5 return 0 ;
6 }
3) 多⾏注释不能嵌套多⾏注释
1 int main ()
2 {
3 /* 哈哈哈 /*嘻嘻嘻*/呵呵呵 */
4 printf("多⾏注释不能嵌套多⾏注释") ;
5 return 0 ;
6 }
4) 下⾯的写法是错误的
1 int main()
2 {
3 // /*哈哈哈*/
4 printf("下⾯的写法是错误的") ;
5 return 0;
6 }
6、注释符的重要性
要养成写注释的良好习惯。绝⼤部分项⽬经理检查下属代码的第⼀件事就是看有没有写注释,也有很多公司的机试也会检查注释。
今天,你写了⼏百⾏代码,很⾼兴,做出了⼀个⾮常不错的功能,但是,忘了写注释。⼀个星期过后,你再回去看那⼀段代码,你可
能完全看不懂了,这是很正常的 事。如果你写了注释,那情况就不⼀样了,注释可以帮助你回顾代码的作⽤。
你在某家公司待了1年多,写了10⼏万⾏代码,但是你不写⼀点注释。有⼀天你离职了,新的员⼯接⼿你做的项⽬,他⾸先要做的事情
肯定是要读懂你写的代码。可是你⼀点注释都没写,10万⾏代码,全部都是英⽂,这会让这位新员⼯⾮常地蛋疼。每个⼈都有⾃⼰的
思想,写代码的思路肯定是不⼀样的,看别⼈写的代码是件⾮常痛苦的事情,特别是没有注释的代码。你不写注释的做法会⼤⼤降低
公司的开发效率。因此,所有的正规公司都⾮常重视注释。
第四讲 数据、常量、变量
⼀、数据
1、什么是数据
⽣活中时时刻刻都在跟数据打交道,⽐如体重数据、⾎压数据、股价数据等。在我们使⽤计算机的过程中,会接触到各种各样的数据,有⽂
档数据、图⽚数据、视频数据,还有聊QQ时产⽣的⽂字数据、⽤迅雷下载的⽂件数据等。
2、数据的分类
计算机中存储的数据可以分为两种:静态数据和动态数据。
1)静态数据
概念:静态数据是指⼀些永久性的数据,⼀般存储在硬盘中。硬盘的存储空间⼀般都⽐较⼤,现在普通计算机的硬盘都有500G左右,
因此硬盘中可以存放⼀些⽐较⼤的⽂件。
存储的时长:计算机关闭之后再开启,这些数据依旧还在,只要你不主动删掉或者硬盘没坏,这些数据永远都在。
哪些是静态数据:静态数据⼀般是以⽂件的形式存储在硬盘上,⽐如⽂档、照⽚、视频等。
2)动态数据(临时数据)
概念:动态数据指在程序运⾏过程中,动态产⽣的临时数据,⼀般存储在内存中。内存的存储空间⼀般都⽐较⼩,现在普通计算机的
内存只有4G左右,因此要谨慎使⽤内存,不要占⽤太多的内存空间。
存储的时长:计算机关闭之后,这些临时数据就会被清除。
哪些是动态数据:当运⾏某个程序(软件)时,整个程序就会被加载到内存中,在程序运⾏过程中,会产⽣各种各样的临时数据,这
些临时数据都是存储在内存中的。当程序停⽌运⾏或者计算机被强制关闭时,这个程序产⽣的所有临时数据都会被清除。
3、数据的⼤⼩
1) 不管是静态还是动态数据,都是0和1组成的。0和1如何组成这么多的数据?
2) 数据都有⼤⼩,静态数据就会占⽤硬盘的空间,动态数据就占⽤内存的空间
3) 数据越⼤,包含的0和1就越多,⽐特位和字节
4) 1 KB = 1024 B,1 MB = 1024 KB,1 GB = 1024 MB,1 TB = 1024 GB
4、C语⾔中的数据类型
⼆、常量
1、什么是常量
常量,表⽰⼀些固定的数据
2、常量的分类
1)整型常量
包括所有的整数,如6、27、109、256、-10、0、-289等
2)浮点型常量(floatdouble)
浮点型常量分为double和float两种数据类型
double:双精度浮点型,其实就是⼩数。⽐如5.43、-2.3、0.0等(注意,0.0也算是个⼩数)
float:单精度浮点型,也是⼩数,⽐double的精确程度低,也就是说所能表⽰的⼩数位数⽐较少。为了跟double区分开来,float 型数
据都是以f结尾的,⽐如5.43f、-2.3f、0.0f。需要注意的是,绝对不能有10f这样格式的,编译器会直接报错,只有⼩数才允许加上f。
3)字符常量(char)
将⼀个数字(0~9)、英⽂字母(a~z、A~Z)或者其他符号(+、-、!、?等)⽤单引号括起来,这样构成的就是字符常量。⽐如'6'、
'a'、'F'、'+'、'$'等
注意:单引号只能括住1个字符,⽽且不能是中⽂字符,下⾯的写法是错误的:'abc'、'123456'、'男'
4)字符串常量
将⼀个或者多个字符⽤双引号("")括起来,这样构成的就是字符串常量。⽐如"6"、"男"、"哇哈哈"、"abcd"、"my_car4",其实
printf("Hello World");语句中的"Hello World"就是字符串常量。
三、 变量
1、什么是变量
当⼀个数据的值需要经常改变或者不确定时,就应该⽤变量来表⽰。
2、定义变量
1)⽬的
任何变量在使⽤之前,必须先进⾏定义。
定义变量的⽬的是:在内存中分配⼀块存储空间给变量,⽅便以后存储数据。
如果定义了多个变量,就会为这多个变量分别分配不同的存储空间。
2)格式
变量类型 变量名;
1 int main()
2 {
3 //在main函数中定义⼏个变量
4 int i;
5 char c;
6 int a, b;
7 return 0;
8 }
变量名属于标识符
变量类型
不同类型的变量占⽤不同⼤⼩的存储空间。内存极其有限,分配适当的存储空间
约束变量所存放的数据类型(⽅便运算)
3、变量的使⽤
1) 赋值
往变量⾥⾯存点东西,就是赋值。赋值语句后带个分号;
1 i = 10; //把10赋值给i变量
注意:这⾥的等号=,并不是数学中的“相等”,⽽是C语⾔中的赋值运算符,作⽤是将右边的常量10赋值给左边的变量i
第⼀次赋值,可以称为“初始化”
初始化的两种形式
1. 先定义,后初始化: int a; a = 10;
2. 定义的同时进⾏初始化: int a = 10;
2) 修改
可以修改变量的值,多次赋值。每次赋值都会覆盖原来的值
i = 10;i = 20; //变量i最后的值是20
使⽤printf输出⼀个多个变量的值
int a = 10, c = 11; 2 printf("a=%d, c=%d", a, c);
doublefloatchar的输出,格式符的⼀些⼩技巧
1 double height = 1.55;
2 char blood = 'A';
3 printf("height=%.2f, ⾎型是%c", height, blood);
4 // %d%i是⼀个格式符(占位符),只能输出整数
5 // %f⽤来输出⼩数,默认是6位⼩数
6 //%c⽤来输出字符
简单的加减操作
int a = 10 + 20;
没有初始化时不要拿来使⽤(下⾯的写法是不建议的)
1 int score; 2 printf("score=%d", score);//未赋值,会输出⼀些乱七⼋糟的数字
3) 变量之间值的传递
可以将⼀个变量的值赋值给另⼀个变量
1 int a = 10; //把10赋值给a
2
3 int b = a; //把a 赋值给b
连续赋值
1 a = b = 10;//连续赋值
4、常见的错误
1)变量名相同int a = 10;int a = 12;
2)变量的作⽤域不对
1 int main()
2 {
3 {
4 int a =100;
5 }
6 printf("a=%d",a);//变量a内存空间已经被释放,就会报变量a未声明错误
7 return 0 ;
8 }
注意点:变量的作⽤域是从定义变量的那⾏代码开始,⼀直到所在的代码块结束。
第五讲 变量的内存分析、Scanf函数
⼀、变量的内存分析
1. 字节和地址
为了更好地理解变量在内存中的存储细节,先来认识⼀下内存中的“字节”和“地址”。
1)内存以“字节为单位”
0x表⽰的是⼗六进制
2)不同类型占⽤的字节是不⼀样的,数据越⼤,所需的字节数就越多
2.变量的存储
1) 所占⽤字节数跟类型有关,也跟编译器环境有关
2)变量实例
1 int b = 10; 2 int a = 20;
内存由⼤到⼩寻址,优先分配内存地址较⼤的字节给变量。b的内存地址⽐a⼤
每个变量都有地址:第⼀个字节的地址就是变量的地址
3)查看内存地址:
1 int a;
2 printf("a的地址是:%pn", &a);
3 //&a: 取得变量a的地址
4 //%p输出地址
3> 注意
⼀个变量⼀定先进⾏初始化,才能使⽤
1 int a;
2 printf("a的值是:%dn", a);
3 //上⾯的写法是不建议的,输出的是⼀些乱七⼋糟的数字
⼆、Scanf函数
1. 简介
这也是在stdio.h中声明的⼀个函数,因此使⽤前必须加⼊#include
会等待标准输⼊设备(⽐如键盘)输⼊数据,并且将输⼊的数据赋值给地址对应的变量
2. 简单⽤法
1 int age; 2 scanf("%d", &age); //先定义⼀个变量来存放要输⼊的值
scanf函数时,会等待⽤户的键盘输⼊,并不会往后执⾏代码。scanf的第1个参数是"%d",说明要求⽤户以10进制的形式输⼊⼀个整
数。这⾥要注意,scanf的第2个参数传递的不是age变量,⽽是age变量的地址&age,&是C语⾔中的⼀个地址运算符,可以⽤来获取
变量的地址
输⼊完毕后,敲⼀下回车键,⽬的是告诉scanf函数我们已经输⼊完毕了,scanf函数会将输⼊的值赋值给age变量
3. 其他⽤法
1)⽤scanf函数接收3个数值,每个数值之间⽤中划线-隔开
scanf("%d-%d-%d", &a, &b, &c);
3个%d之间是⽤中划线-隔开的,因此我们在每输⼊⼀个整数后都必须加个中划线-,⽐如这样输⼊,不然在给变量赋值的时候会出问题
注意:数值之间的分隔符是任意的,不⼀定要⽤中划线-,可以是逗号、空格、星号*、井号#等等,甚⾄是英⽂字母
//逗号分隔
1 scanf("%d,%d,%d", &a, &b, &c); // 输⼊格式:10,14,20
// 井号分隔
scanf("%d#%d#%d", &a, &b, &c); // 输⼊格式:10#14#20
// 字母分隔
1 scanf("%dx%dx%d", &a, &b, &c); // 输⼊格式:10x14x20
2) ⽤scanf函数接收3个数值,每个数值之间⽤空格隔开
1 scanf("%d %d %d", &a, &b, &c);
3个%d之间是⽤空格隔开的,我们在每输⼊⼀个整数后必须输⼊⼀个分隔符,分隔符可以是空格、tab、回车
4. 注意
scanf的第⼀个参数中不要包含n,⽐如scanf(“%dn”, &a); 这将导致scanf函数⽆法结束
发布评论