一、 C语言设计基础
- 变量
(1)整型:int、long
(2)实型:float、double
(3)字符型:char - 常量
(1)整型:
十进制常数:0~9,首位非0
八进制常数:0~7,以0开头
十六进制常数:0~9,a ~ f
(2)实型:小数形式、指数形式
(3)字符型:普通字符、转义字符、字符串常量 - 运算符
单目:++、–、&、* 、!
双目:+、-、* 、/
三目:a ? : b : c
关系运算符
位逻辑运算符、逻辑运算符(两者区别)
赋值运算符
二、选择结构
- 单分支选择:if
- 双分支选择:if - else
- 多分支选择:if - else if…/switch case
- 嵌套:匹配原则(else和离它最近的、且没有配对的if相配对)
三、循环结构
- while循环:循环体有可能一次也不执行,且循环体中一般有使循环趋向结束的语句
- do while语句:循环体至少执行一次
- for循环
- 循环嵌套
四、数组
- 数值数组:一维数组、二维数组
- 字符数组
(1)字符串:本质上就是以‘\0’作为’结尾的特殊字符数组
1)存储形式:字符数组char []、字符指针char *
2)表示形式:
char str[6] = {'H', 'e', 'l', 'l', 'o'}; //如果字符串所含元素中我们没有加上'\0',那么字符串长度应该就为字符串实际长度+1;
char str[] = {'H', 'e', 'l', 'l', 'o', '/0'}; //需要在{}中写上'\0';
char str[] = "Hello"; //同上等价
3)处理函数:
1:字符串的输出函数
int puts(char const*strPtr);
//输出字符串,传入的实参可以是字符串数组也也可以是字符指针
2:字符串的输入函数
char *gets(char *strptr);
//输入一个字符串存放到指针strptr指向的字符数组作
3:获取字符串的长度
int strlen(char const*string);
//获取字符串的长度,返回的是字符的个数,但是不会包括’\0’结束符
4:字符串拷贝函数
char *strcpy(char*des,char*src);
//将src指向的字符串拷贝到des指向的字符串数组中去,结束符也一同进行拷贝
5:字符串的连接函数
char * strcat(const *char str1,const *char str2);
//将str2指向的字符串连接到str1指向的字符后面,同时会删除str1后面的’\0’,返回的是str1指向字符串的首地址重点内容
6:字符串比较函数
int strcmp(const char * str1,const char *str2);
//返回0,字符串1等于字符串2,
//大于0,字符串1大于字符串2,
//小于0,字符串1小于字符串2,
7:字符串中是否包含字符
char * strchr(const char *,int c);//从做往右寻找字符c
char * strrchr(const char *,int c); //从有往左开始寻找字符c
8:内存的初始化
memset(void *s,int c,size_t n);
(2)字符串数组:一个数组中的所有的元素都是字符串(字符串数组就是二维数组)
五、函数
- 定义
有返回值的函数、没有返回值的函数(void)
有参函数、无参函数 - 调用
六、指针(重点)
- 概念:指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址
- 运算:指针可以加上或减去一个整数。指针的这种运算以单元为单位。
char a[20];
int *ptr=(int *)a;
ptr++;
在本例中,指针ptr 的类型是int*,它指向的类型是int,它被初始化为指向整型变量a。
第3句中,指针ptr被加了1,它把指针ptr 的值加上了sizeof(int),在32 位程序中,是被加上了4,此时指向了数组a中从第4号单元开始的四个字节。
- 指针与数组:数组的数组名可以看作一个指针
int array[10]={0,1,2,3,4,5,6,7,8,9};
value=array[0]; //也可写成:value=*array
value=array[3]; //也可写成:value=*(array+3)
value=array[4]; //也可写成:value=*(array+4)
- 指针与函数:
可以把一个指针声明成为一个指向函数的指针;
可以把指针作为函数的形参。在函数调用语句中,可以用指针表达式来作为实参。 - 指针的指针(**)
七、结构体与共用体
-
结构体关键词:struct
-
共用体关键字:union
共用体也叫联合体,使几个不同类型的变量共占一段内存(相互覆盖),也就是说共用体的成员共用一片内存,后赋值的成员变量的数据才是共用体的生效数据,因为前面的赋值已经被覆盖了。
八、文件编译系统
- 预处理命令:define、include
- 文件:文件打开(fopen)关闭(fclose)、文件定位、文件读写
- 文件使用方式:只读(r)、只写(w、wb)、追加(a)、读写(r+若欲操作的文件不存在,则打开失败,打开文件后,不会清空文件内原有内容;w+若欲操作的文件不存在,则新建文件,打开文件后,会清空文件内原有的内容;a+若欲操作的文件不存在,则新建文件,成功打开文件时,文件指针位于文件结尾)