如何快速复习C语言知识点
如何快速复习C语言知识点
1. 数据类型
1.1 基本类型
C语言的关键字、标识符
关键字 | 类型 | 字节数 |
---|---|---|
char | 字符型 | 1 |
int | 整型 | 4 |
float | 单精度浮点型 | 4 |
double | 双精度浮点型 | 8 |
enum枚举类型
定义形式为:
enum | typeName{ valueName1, valueName2, valueName3, … };
enum是一个新的关键字,专门用来定义枚举类型,这也是它在C语言中的唯一用途;typeName是枚举类型的名字;valueName1, valueName2, valueName3, …是每个值对应的名字的列表。注意最后的;不能少。
1.2 构造类型
1.数组(一维数组、二维数组、多维数组)
数据类型 + 变量名[ ][ ] 一定注意是从零开始计算的排列坐标
char arr1[3]={'a','b','c'};
int arr[2][2]={0,1,2,3};
2.结构体
结构体定义
struct 类型名{
成员表列
} 变量;
3.共同体 union
变量共同使用一个存储空间,定义和用法与结构体相似
typedef union{
char c;
int a;
int b;
}Demo1;
int main()
{
Demo1 d;
d.a = 11;
d.b = 2;
d.c = 'H';
printf("size: %d\n", sizeof(d));
printf("%c %d %d\n", d.c, d.a, d.b);
return 0;
}
1.3指针类型
1.指针数组
int (* arrPtr)[10] = NULL; // 一个指针,它指向一个有10个int元素的数组
int * arrPtr[10] = NULL; //表示 arrPtr 是一个具有 10 个 int 类型指针的数组。
2.结构体指针
储存结构体类型的指针
struct Student
{
char cName[20];
int number;
}student1;
struct Student*p;
p=&student1;
p->number = 100;//指针通过->访问结构体的变量
3.指针的指针
储存指针类型的指针
int a = 1;
int *q = &a;
int **c = &q;
//c = &q
//*c = q = &a
//**c = 1 = *q = a;
4.函数指针
如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。
int Func(int x); /*声明一个函数*/
int (*p) (int x); /*定义一个函数指针*/
int a = 10;
int b;
p = Func; /*将Func函数的首地址赋给指针变量p*/
b = (*p)(a);//指针函数调用函数
5.无类型指针
void *data = "Hello World";//一个无类型指针代替所有的类型,这里是存储字符型数据
6.指针常量和常量指针
const int * p ;// p is a point to int const ,p是一个指向常量的指针,指向的对象是一个常量,所以不能改变 *p(p指向内存地址)的值,但是p可以指向其它地址
int * const p;// p is a const point to int, p是一个常量指针,指向int,所以不能改变指针本身p的值,但是可以改变p指向内存地址的值
2.输入输出和运算符
输入输出方式 :
putchar(输出字符)
getchar(输入字符)
char ch;
ch = getchar();
putchar(ch);
printf(格式输出)
scanf(格式输入)
int a=0;
printf("输入数据:\n");
/*请注意,这里多了一个回车符\n*/
scanf("%d\n",&a);
printf("输出数据:\n",a);
puts(输出字符串)
gets(输入字符串)
char s[81];
gets(s); //输入bai一个字符du串zhi,最长80个字符,回车结束输入。
puts(s); //将输入的字符串显示到屏幕上。
运算符:
'+','-','*','/','%','<','>','='
3.控制语句
3.1选择结构
1>if …else…
if(a>b) max=a;
else max=b;
2>switch
int n;
scanf("%d",&n);
switch(n)
{
case 1:printf("一月\n");
case 2:printf("二月\n");
default:printf("错误\n");
}
3.2循环结构
1.for
int i = 0;
for(i=0;i<10;i++)
{
printf("%d\n",i);
}
2.while
int i = 10;
while(i)
{
i--;
printf("%d\n",i);
}
3.do…while…
int i = 10;
do
{
i--;
printf("%d\n",i);
}while(i)
3.3其他控制语句
1.return 返回值
2.break 跳出当前循环
3.goto 无条件转移语句
4.continue 继续当前循环
5.exit()函数 退出
4.数据传递方式
4.1 参数传递
4.2返回值
4.3全局变量
4.4局部变量
4.5形式参数
4.6按值传递和按地址传递
5.函数
定义
声明
递归
调用
返回值
6.链表
通用链表(理解)
-
首先还是声明、定义、初始化。
-
相对于普通链表来说,通用链表是特殊的普通链表,去表在于通用链表将普通链表的数据域给单独拿出来了,并且分装成了一个结构体,原本的结构体的数据域用一个无类型的指针变量来存放数据域结构体的地址,头结点和尾结点(用无类型指针访问数据域的地址),数据就不再只是一种或者只是一开始定义的一类,同一份链表,可以适用相似的数据结构类型,从而达到通用的目的。
-
对于函数的封装,碰到数据域的地方要相对的用无类型指针强制转换去访问空间,打印、添加、定结点个数、删除、整体释放
//链表结构体定义
typedef struct note_t
{
void *date;
struct note_t *pnext;//指向下一个指针的首地址
}NOTE_T;
typedef NOTE_T* User;
User date_assignment();
7.文件
掌握fseek、fopen 、fgetc、fread、fwrite,fclose,rewind函数
打开文件(创建文件)函数:
初来驾到,学写博客,用作复习总结。若有误,还请各位大佬海涵,若有闲,望能指点吾之愚错。