------ <a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a> 期待与您交流! -------
C语言中的基本概念总结
一.关键字
1.关键字基本概念
关键字就是已被C语言本身使用,不能作其它用途使用的字。 例如关键字不能用作变量名、函数名等 .
2.关键字的分类
(1)数据类型关键字
A.基本数据类型(5个)
Void float double
B .类型修饰关键字(4个)
Short long signed unsigned
C .复杂类型关键字(5个)
struct union enum typedef sizeof
D .存储级别关键字(6个)
Auto static register extern const volatile
(2)流程控制关键字
A .跳转结构(4个)
return break goto
B .分支结构(5个)
if else case default
C .循环结构(3个)
For do while
二.标识符
1.概念
在C语言中,符号常量,变量,数组,函数等都需要一定的名称,我们把这种名称成为标识符。
2.命名规则:
1、只能由字母、数字、下划线或者美元符号($)组成
2、不能以数字开头
3、不能与关键字重名
3.命名规范:
4、严格区分大小写
起一个有意义的名字
驼峰命名:第一个单字以小写字母开始,第二个单字的首字母大写
或每一个单字的首字母都采用大写字
三.数据类型
1.C语言数据类型
2.数据类型所占的字节数
四.常量
1.概念:
常量就表示一些固定的数据,也就是不能改变的数据 .
2.常量分类
1)整型常量,也就是整常数。
2)实型常量。
3)字符型常量。
4)字符串常量,注意字符串常量和字符型常量是不一样的。
3.定义常量的方法
例: const int a = 10;
五.变量
1.概念
所谓变量,是代表内存的某个空间,它的取值可以变的,是数据的基本单元。
2.变量的定义格式
格式1 : 变量类型 变量名称 ;
例: int a;
格式2 : 变量类型 变量名称, 变量名称 ;
例: int a, b;
注:变量命名的规范:
1)严格的遵守标识符的命名原则
2)变量名要尽可能的望文知意、简洁
3)变量名要按照驼峰命名法(遵从命名规范)
3.变量初始化
1)定义的同时进行初始化
2)先定义,后初始化
3)使用一个变量进行初始化
4)还可以批量的进行初始化
注:变量的第一次赋值被成为称为初始化,以后再赋值相当于覆盖了上一次的值.
4.变量的使用
1)进行赋值:赋值是要使用“=” ,把等号右侧的值放到等号左侧的变量中
例:
int a;
int b = 10;
a = b; //把b的值赋值给a
注:(1)赋值的时候,= 号的左侧必须是变量 (10=b,错)
(2)规范:习惯将 = 的两侧 各加上一个 空格
2)变量的操作: 运算、判断....
5.变量的作用域
1)局部变量局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内,离开该 函数后再使用这种变量是非法的。
注意:
(1)主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时,主函数中 也不能使用其它函数中定义的变量。因为主函数也是一个函数,它与其它函数是平行关系。
(2)形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
(3)允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不 干扰,也不会发生混淆。虽然允许在不同的函数中使用相同的变量名,但是为了使程序明了易懂,不提倡在不同的函数中使用相同的变量名.
2)全局变量全局变量也称为外部变量,它是在函数外部定义的变量。
注意:
(1)对于局部变量的定义和说明,可以不加区分。而对于外部变量则不然,外部变量的定义和外部变量的说明并不是一回事。外部变量定义必须在所有的函数之外,且只能定义一次。 其一般形式为: [extern] 类型说明符 变量名,变量名...其中方括号内的extern可以省去不写。
(2)而外部变量说明出现在要使用该外部变量的各个函数内,在整个程序内,可能出现多次,外 部变量说明的一般形式为: extern 类型说明符 变量名,变量名,...;外部变量在定义时就已 分配了内存单元,外部变量定义可作初始赋值,外部变量说明不能再赋初始值,只是表明在函数 内要使用某外部变量。
(3)外部变量可加强函数模块之间的数据联系,但是又使函数要依赖这些变量,因而使得函数的独立性降低。从模块化程序设计的观点来看这是不利的,因此在不必要时尽量不要使用全局变量。
(4)在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。
六.printf函数
1、printf函数介绍
printf函数是一个标准库函数,能够以精确的格式输出程序运算的结果。
printf函数的调用格式为:
printf("格式控制字符串",输出项列表);
注:
1)格式字符串
是由格式字符(包括:转换说明符、标志、域宽、精度)和普通字符组成,转换说明符和百分号(%)一起使用,用来说明输出数据的数据类型、标志、长度和精度.
2)输出项列表
可以是常量、变量和表达式,也可以没有输出项,这些输出项必须与格式控制字符串在类型和数量上完全对应,否则,结果将不可预测。当有多个输出项时,各个输出项之间用逗号‘,’分隔 .
2.格式字符的使用说明
printf的格式控制的完整格式:
% - 0 m.n l或h 格式字符
下面对组成格式说明的各项加以说明:
1%:表示格式说明的起始符号,不可缺少。
2-:有-表示左对齐输出(右侧补空格),如省略表示右对齐输出(左侧补空格)。
30:有0表示指定空位填0,如省略表示指定空位不填。
4m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。对数值型的来说,未指定n时,隐含的精度为n=6位。
5l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。
格式字符:格式字符用以指定输出项的数据类型和输出格式。
1d格式:用来输出十进制整数。有以下几种用法:%ld:输出长整型数据。
2o格式:以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用“%mo”格式输出。
3x格式:以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式输出。
4u格式:以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽度用“%mu”格式输出。
5c格式:输出一个字符。
6s格式:用来输出一个串。有几种用法
%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。
%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格,注意:如果n未指定,默认为0。%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出,注意:如果n未指定,默认为0。
如果是sprintf(desc, "%m.ns", sour); 如果desc空间够的话,会在%m.ns 串 的结尾自动补null字符,不同于strncpy。
1)%f:不指定宽度,整数部分全部输出并输出6位小数。
2)%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
3)%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
7e格式:以指数形式输出实数。可用以下形式:%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。
8g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。
9p格式:输出变量在内存中的地址(指针)
3.printf函数使用注意事项
1)域宽问题
%d:按整型数据的实际长度输出。关于整数数据打印的时候域宽的问题。
%md-->m域宽,打印出来以后,在控制台上,显示m位
如果我们要打印的数的位数如果超过我们设定m则原样输出
如果我们要打印的数的位数如果小于我们设定的位数,则补空白
如果m为正数,则左对齐(左侧补空白)
如果m为负数,则右对齐(右侧补空白)
%0md表示,位数不足部分补“0”
2)关于转义字符
\n换行,相当于敲一下回车。
\t跳到下一个tab位置,相当于按一下键盘上的tab键。\b退格,相当于按一下backspace。
\r使光标回到本行开头。
\f换页,光标移到到下页开头。
\\输出\字符,也就是在屏幕上显示一个\字符。
\'输出'字符,也就是在屏幕上显示一个'字符。
\"输出"字符,也就是在屏幕上显示一个"字符。
七.scanf函数
1.scanf函数的介绍
scanf函数原型包含在标准输入输出头文件“stdio.h”中,用于接受键盘输入的内容。
格式: scanf("格式控制字符串",输入项地址列表);
格式控制字符串:
规定数据输入的格式,由格式控制符和普通字符组成,格式控制符和百分号(%)一起使用,用来说明输入数据的数据类型(格式字符).
输入项地址列表:
需要接收数据的变量地址,这些输入项与格式控制字符串在类型和数量上要对应,当有多个输入项时,各个地址名之间以逗号“,”分隔。输入格式和变量类型要保持一致。
另外:
在C语言中,一个变量的地址可以通过地址运算符&得到。例如:定义int a,b;则a,b的地址为&a,&b
2.scanf的使用注意事项
1)如果在输入时,输入了多个空格、回车、Tab都会被系统忽略的
2)如果要获取的内容是多个整数,中间输入了多个空格、回车、Tab都会被系统忽略
3)非法的格式输入,得不到想要的结果
4)混合整形和字符型数据接收 当整形的数和字符混合输入时,要避免“空格”添麻烦.为防止混合输入 空格 造成的错误,可以通过添加普通的分隔符解决
3.scanf中的修饰符
scanf函数的修饰符有:数据读入宽度(域宽)、*和长度.
1)关于域宽:可以用一个十进制数指定输入数据的数据宽度,系统自动按域宽截取输入数据.
2)关于“ * ”:表示按指定格式读入数据但不赋予相应的变量,作用是跳过相应的读入数据 .
3)关于使用"\n"的问题:scanf中可以使用"\n",但是输入的时候需要原样输入"\n"
八.运算符
1.运算符基本概念
运算符是运算符是告诉编译器程序执行特定算数或逻辑操作的符号.
2、分类
按照功能划分:
算术运算符、 关系运算符与逻辑运算符、按位运算符。
运算符根据参与运算的操作数的个数分为:
单目运算:只有一个操作数 如 : i++ ! sizeof
双目运算:有两个操作数 如 : a+b
三目预算:C语言中唯一的一个,也称为问号表达式 a>b ? 1 : 0
3.运算符图表
4.运算符的优先级
C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的 结合性所规定的结合方向处理。
5.结合性:
C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。
九.表达式
1.概念:
将同类型的数据(如常量、变量、函数等),用运算符号按一定的规则连接起来的、有意义的式子称为表达式。
2.分类:
算术表达式
逻辑表达式
字符串表达式
3.特点:
表达式是一个有意义的式子,所以一定有返回值.