![38676a6a0352b80dedeb81eca67d557e.png](https://i-blog.csdnimg.cn/blog_migrate/fc3d2f58de759fd17f06aa38132ba46f.jpeg)
1.C语言关键字
存储类型:extern static register auto
基本数据类型:int char short long double void float enum unsigned signed
构造数据类型:struct union typedef
结构语句:if switch while for
辅助结构语句:else case break default do return continue goto
其他:volatile const sizeof
2.基本数据类型
整型:int short long char
浮点型:double float
所占空间 有符号数据范围 无符号数据范围
char 1字节 -128————127 0————255
short 2字节 -32768————32767 0————65535
其他存储类型在/usr/include/limits.h文件中查看
ascii表中注意内容:
32 ' ' 空格
48—————57 '0'-------'9'
65—————90 'A'-------'Z'
97—————122 'a'-------'z'
定义变量一般形式
<存储类型> <数据类型> <变量名>;
变量名:符合标识符的定义规则
由字母、数字、下划线组成
不能以数字开头
不能关键字相同
3.运算符
算术运算符
+ - * % ++ --
++ ++在前,先自加,后运算 ++在后,先运算,后自加
-- --在前,先自减,后运算 --在后,先运算,后自减
关系运算符
> >= < <= == !=
逻辑运算符
&& || !
&& 当&&运算符前面表达式不成立时,后面表达式不做判断
|| 当||运算符前面表达式成立时,后面表达式不做判断
赋值运算符与赋值复合运算符
=
+= -= *= = %=
逗号运算符
(表达式1,......,表达式n)
整个表达式的值为最后一个逗号后面表达式的值,前面表达式的值参与运算
a=100,b= 200;
c = (a++,b++,a+10);
条件运算符
<表达式1> ? <表达式2> : <表达式3>
sizeof运算符
sizeof既是关键字,也是运算符
4.C语言结构
选择结构
if——else
普通:
if(表达式)
语句块1;
else
语句块2;
并列:
if(表达式1)
语句块1;
else if(表达式2)
语句块2;
else if(表达式3)
语句块3;
else
语句块4;
嵌套:
if(表达式)
if(表达式)
语句块1;
else
语句块2;
else
if(表达式)
语句块3;
else
语句块4;
switch————case
switch (表达式)
{
case 常量表达式1:语句块1;break;
case 常量表达式2:语句块2; break;
….
case 常量表达式n:语句块n; break;
default :语句块n+1
}
循环结构
while(表达式)
{
语句块;
}
判断表达式是否成立,若成立,执行语句块,并继续判断表达式;若不成立,跳过循环语句,执行下面语句块
for(表达式1;表达式2;表达式3)
{
语句块
}
首先执行表达式1
判断表达式2是否成立,若成立,执行语句块
执行表达式3,判断表达式2
5.数组:
定义:数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素。
数组中各元素的数据类型要求相同,用数组名和下标确定。数组可以是一维的,也可以是多维的。
一维数组:
定义:所谓一维数组是指只有一个下标的数组。它在计算机的内存中是连续存储的。
一维数组的说明一般形式如下:
<存储类型> <数据类型 > <数组名>[<表达式>] ;
数组名:数组名表示数组所占内存首地址,是地址常量
计算数组大小:
内存字节数=数组维数*sizeof(元素数据类型)
内存字节数=sizeof(数组名)
数组初始化:
数组不初始化,其元素值为随机数
对static数组元素不赋初值,系统会自动赋以0值
只给部分数组元素赋初值,其他元素自动初始化为0
当全部数组元素赋初值时,可不指定数组长度
冒泡排序
排序过程:
(1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上
(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置
(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束
6.指针:
地址:在计算机内部存储器(简称内存)中,每一个字节单元,都有一个编号,称为地址
指针:内存单元的地址称为指针
指针变量:专门用来存放地址的变量
一般形式如下:
<存储类型> <数据类型> *<指针变量名> ;
例如,char *pName ;
指针的存储类型是指针变量本身的存储类型。
指针说明时指定的数据类型不是指针变量本身的数据类型,而是指针目标的数据类型。简称为指针的数据类型。
具有相同存储类型和数据类型的指针可以在一个说明语句中说明。
&与*运算符
&含义: 取变量的地址
*含义: 取指针所指向变量的内容
直接访问与间接访问
直接访问:按变量地址存取变量值
间接访问:通过存放变量地址的变量去访问变量
7.字符串:
特殊的字符数组,以字符'0'(ASCII值为0)作为结束标志
gets函数
函数原型:char *gets(char *s);
头文件:#include <stdio.h>
函数功能:从终端获取输入的字符串
函数传参:s获取字符串的首地址
函数返回值:获取字符串的首地址
puts函数
函数原型:int puts(const char *s);
头文件:#include <stdio.h>
函数功能:将字符串内容打印到终端上
函数传参:s输出字符串的首地址
函数返回值:从终端上实际获取到的字节数(包括结束标志'0')
strlen函数
函数原型:size_t strlen(const char *s);
头文件:#include <string.h>
函数功能:计算字符串中字符个数(不包括结束标志'0')
函数传参:s字符串首地址
函数返回值:字符串中实际元素个数
strcpy
函数原型:char *strcpy(char *dest, const char *src);
头文件:#include <string.h>
函数功能:将字符串src中的内容拷贝到dest字符串中
函数传参:dest目标字符串,src源字符串
函数返回值:返回目标字符串的首地址
strcat函数
函数原型:char *strcat(char *dest, const char *src);
头文件:#include <string.h>
函数功能:将字符串src中的内容拼接到dest字符串中
函数传参:dest目标字符串,src源字符串
函数返回值:返回目标字符串的首地址
strcmp函数
函数原型:int strcmp(const char *s1, const char *s2);
头文件:#include <string.h>
函数功能:比较s1与s2两个字符串
函数传参:s1,s2分别为比较的两个字符串的首地址
函数返回值:1 s1>s2
0 s1==s2
-1 s1<s2
memset函数
函数原型:void *memset(void *s, int c, size_t n);
头文件:#include <string.h>
函数功能:将数组中所有字节内容全部写为整型数c
函数传参:s数组首地址,c写入数组的内容,n写入数据的大小(字节)
函数返回值:数组的首地址
memcpy函数
函数原型:void *memcpy(void *dest, const void *src, size_t n);
头文件:#include <string.h>
函数功能:将数组src中的内容按照n个字节大小拷贝到dest数组中
函数传参:dest目标数组,src源数组,n拷贝数据的大小(字节)
函数返回值:数组的首地址
8.函数:
定义:函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空值。
一般形式如下:
<数据类型> <函数名称>( <形式参数说明> )
{
语句序列;
return[(<表达式>)];
}
函数的说明
函数的说明就是指函数原型
其中,<形式参数说明>可以缺省说明的变量名称,但类型不能缺省。
先声明,后使用
结构体:
概念:结构体是用户自定义的新数据类型,在结构体中可以包含若干个不同数据类型和不同意义
的数据项(当然也可以相同),从而使这些数据项组合起来反映某一个信息。
定义一个结构体类型的一般形式为:
struct 结构体名
{
数据类型 成员名1;
数据类型 成员名2;
:
数据类型 成员名n;
};
结构体类型的特点:
(1)结构体类型是用户自行构造的。
(2)它由若干不同的基本数据类型的数据构成。
(3)它属于C语言的一种数据类型,与整型、实型相当。
定义结构体变量:
方法一:
先定义结构体类型再定义变量名
struct 结构体名
{
成员列表;
};
struct 结构体名 变量名;
方法二:
struct 结构体名
{
成员列表;
}变量名;
方法三:
struct //没有结构体名
{
成员列表
}变量名;