数据类型
在大学中,许多同学不管是否属于计算机专业,都是需要接触有关C语言的知识,下面是对C语言程序设计的一些基础知识点。
https://pan.baidu.com/s/1HGI_--SJCKfimidVRyS69Q
提取码:0711
这是vs2019和devc++,各位可以根据自己的需求下载,个人建议新手下载后者,它会代码的检查没有前者严格,写出来的代码较简洁(个人认为),比较适合初学者。
引例
介绍C语言的基本要素
#include<stdio.h>
int main(){
printf("Hello World!");
return 0;
}
注释:分为 // 和 /**/ 两种,当时使用后者时,注释内容必须写在/*和*/之间。注释中的内容可以是任何显示字符,注释部分对执行结果没有任何影响。注释出现在一串代码的前方时,说明了这一段代码的功能,出现在这一串代码后面时,说明的时这一行代码的功能。
注意:1. “/”和 “*” 之间不能有空格
2. 注释不能出现在语句中间
#include<stdio.h>
预处理命令:书写后就可以调用这个库中的相应的函数。
注意:C语言中有效的代码都是以#开始的,预处理命令的末尾不加分号。
int main()
主函数在一个C语言程序中有且只有main函数(),程序运行时,会从main()开始执行
函数体:一对大括号将函数的所有语句括起来就构成了函数体。本程序中函数体有两条语句
第一条语句为
printf("Hello World!");
它由函数调用和分号两部分组成。printf("Hello World!")调用了标准输出函数,将引号中的内容原样的输出在屏幕上,语句末尾的分号表示改语句结束
注意:C语言除了复合语句之外的所有语句都必须以分号结束
main()函数中的第二条语句是:
return 0;
它结束main()函数的运行,并向系统返回一个整数0,作为程序的结束状态。如果返回0,说明程序运行正常,返回其他值则表示不同的错误情况。系统会根据返回值判断程序是否运行成功。
#define MAXSIZE 1000
宏定义:定义了一个符号常量,程序中凡是要用到1000的地方都可以用MAXSIZE替代,用户也可以根据自己的需求进行定义,提高了程序的延续性。
数据类型
1.基本类型还可以分解为其他类型,主要为整型、字符型和浮点型。
2.构造类型是根据已定义的一个或多个数据类型,用构造的方法来定义的。可以理解为,一个构造类型的值由若干个“成员”或“分量”构成。每个“成员”都是一个基本类型或一个构造类型。
3.C语言中构造类型包括:数组类型、结构体类型、共用体类型和枚举类型。
4.指针是C语言中一种特殊的,同时又具有重要作用的数据类型。
C语言中的常量
常量就是在执行的过程中,数值不发生改变的量,分为直接常量和符号常量两种
直接常量
直接常量又分为整形常量、实型常量、字符常量和字符串常量。
1.整形常量
整形常量即整数,包括正整数、负数和零,C语言中整数常量可以用是十进制、八进制、和十六进制表示。
十进制:由数字0~9,正负号组成,如432,-872等。
八进制:以0(数字0)为前缀,其后由数字0~7组成,如0453,054;八进制一般是无符号数。
十六进制:以0x或0X为前缀,其后是0~9和字母A~F(字母大小写均可)组成,例如0x12ab,0X34da等。十六进制一般是无符号数
注意:
1.在一个整数常量后面加上一个字母u或者U,认为是unsingned int型,如246U.
2.在一个整形常量后面加上一个字母l或L,认为是long int型,如12L.
(关于进制转换会在之后的文章进行讲解)
2.实型常量
实型常量即实数文称浮点数。C语言中,实数只能用十进制形式表示,实数的表示方法有两
种:小数形式和指数形式。
1.小数形式:由整数部分、小数点和小数部分组成,当整数部分或者小数部分为0时,可以省
略不写,但是小数点不可省略。如12.345,3.,-.123等均为正确的实数。
2.指数形式:由尾数部分、字母E或e和指数部分组成,格式为:士尾数E指数。如1.23E-2、
3.14E+3等,它们表示的数值分别为1.23×10-2、3.14×10°。注意:
2.1以小数形式表示实数时,必须有小数点,并且小数点的前、后至少一边要有数字。
2.2以指数形式表示实数时,字母E(或e)的前后必须有数字,并且指数部分只能是整数。如
12.-E3、1.5E、E6都是不正确的实数。
在C语言中,实型常量默认为是double型的实数,如果在数的后面加字母f或F(如1.65f、
654.87F),则认为是float型的实数。
3.字符型常量
学符常量指单个字符,用一对单引号及其括号所括起的字符来表示。如'a'、'B'、'=!$'、?'都
是合法的字符常量。在C语言中,字符常量有以下特点:
1.字符常量只能用单引号括起来,不能用双引号或其它括号。
2.字符常量只能是单个字符,不能是字符串。
3.字符可以是ASCII字符集中的任意字符。按ASCII码的大小,不同的字符之间存在着次序以
字符的ASCII码值按升序连续排列。如小写字母的ASCI码太于大写字母的ASCII码,大写字母的
ASCII码大于数字字符的ASCII码。
使用字符常量时,每个字符在内存中占用一个字节,用于存储它的ASCII码值。所以C语言中
的字符常量具有数值特征,可以像整数一样参加运算,此时相当于对字符的ASCI码进行运算。
转义字符
转义字符 | 转义功能 | ASCII码值 |
\0 | 空字符 | 0 |
\a | 响铃 | 7 |
\b | 退格 | 8 |
\t | 水平制表符 | 9 |
\n | 回车换行 | 10 |
\v | 竖向跳格 | 11 |
\f | 换页 | 12 |
\r | 回车 | 13 |
\" | 双引号(“) | 34 |
\' | 单引号(‘) | 39 |
\? | 问好(?) | 63 |
\\ | 反斜线(\) | 92 |
\ddd | 1~3位八进制所代表的字符 | |
\xhh | 1~2位16进制所代表的字符 |
4.字符串常量
字符串常量是由一对双引号””括起来的零个或多个字符序列,如:"HelloWorld”。字符事中可
以使用空格字符、转义字符和其他字符,也可以使用汉字等文字符号。如:"china”、"你好
Visual C"、”\tVisual C”等。字符串中还可以使用空字符,如:””表示空串,即不包含任何字符。
字符串常量在内存中占用一段连续的存储单元,系统自动在每个字符串的尾部加上“\0'作为字
符串的结束标志,因此,n个字符组成的字符串,在内存中要占用n+1个字节空间。可以使
用 sizeof运算符来计算字符串占用的内存空间大小。
如字符串常量”Hello\nWorld”占用12个字节的内存空间,存储图示如下:
H | e | l | l | o | \n | W | o | r | l | d | \0 |
字符串的长度等于该字符串中所包含的有效字符的个数,如"HelloWorld”的长度10.在字符串
中如通到\0'(\0'是字符串结束符)则认为该字符串结束,如"Hello\0Worhd的长度为5。如果字符串中
有转义字符,则一个转义字符作为一个字符,如"HelloWorldly的长度为11。可以使用strlen()函数来
计算字符串的长度。
注意:
字符常量和字符串常量在内存中的存储情况是不同的,如'6'在内存中占1个字节,存储的是其
ASCII码,而"6”在内存中占2个字节,一个字节存储'6',另一个字节存储\0'。可以把一个字符常量
赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量,在C语言中,由于没有提供字符
串类型的变量,字符串一般用字符数组来解决
5.符号常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须
先定义,其一般形式为:
#define 标识符 常量值
其中#define是一条编译预处理命令,称为宏定义命令(见11.1节),其功能是把该标识符定义为
其后的常量值,该标识符称为符号常量。一个#define命令只能定义一个符号常量,若要定义多个
符号常量,需使用多个#define命令。
符号常量使用的好处:
1.增加函数的可读性。
2.提高函数的可维护性
3.简化程序代码
4.方便数组的定义