一、C语言数据类型
基本类型:整数类型和浮点类型
枚举类型
void类型
派生类型:指针、数组、结构、共用体和函数
整数类型:char int short long
浮点类型:float double long double
extern int i;
二、常量和变量
常量 :整数常量、浮点常量、字符常量、字符串常量
定义方式:1、#define 2、const
#define PI 3.1415926
const int var=5;
三、C存储类
auto register static extern
auto是所有局部变量默认的存储类;register是寄存器存储类(计数器);static;extern用于在另一个文件中声明一个全局变量或函数。
四、运算符
算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、杂项运算符
算术运算符:+ - * / % ++ --
关系运算符:== != > < >= <=
逻辑运算符:&& || !
位运算符:& | ^ ~ >> <<
赋值运算符:= += -= *= /= %= <<= >>= &= ^= |=
杂项运算符:sizeof()返回变量的大小, &返回变量的地址,*指向一个变量,?:条件表达式
五、程序结构
if语句,if else 语句,switch 语句
while语句,for循环,do while语句
六、函数
int max(int num1,int num2){}
函数参数:传值调用、引用调用
七、作用域
局部变量、全局变量、形式参数
八、数组
double balance[10];
double balance[]={1.1,2.2,3.3,4.4,5.0};
double balance[5]={1.1,2.1,3.1,4.1,5.0};
九、枚举
enum DAY{
MON=1,TUE,WED,THU,FRI,SAT,SUN};
枚举变量的定义:
enum DAY{ ...}day;
enum {...}day;
enum DAY{...};enum DAY day;
十、指针
定义:指针也就是内存地址,指针变量是用来存放内存地址的变量。
int *p;
double *dp;
p=&var;
空指针:NULL
if(ptr) /如果p非空,则完成/
if(!ptr)/如果p为空,则完成/
十一、函数指针与回调函数
1、函数指针
int (*p)(int,int)=&max;//&可以省略
2、回调函数:通过函数指针调用的函数,简单说就是由别人的函数执行时调用你实现的函数。
十二、字符串
字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。
空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符。
操作字符串的函数有:strcpy(s1,s2) strcat(s1,s2) strlen(s1) strcmp(s1,s2) strchr(s1,ch) strstr(s1,s2)
<string.h>
十三、结构体与共用体
1、结构体
结构体是c语言中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。
(1)struct Books
{
char title[50];
char author[50];
char subject[50];
int book_id;
}book;
struct Books b1;
(2)typedef struct{
int a;
int b;
}Simple2;
Simple2 u1,u2;
结构体的访问:u1.a u1.b
指向结构体的指针,结构体作为函数参数
2、共用体
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。
union Data { int i; float f; char str[20]; } data;
十四、位域、typedef
1、所谓"位域"是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。
struct bs{ int a:8; int b:2; int c:6; }data;
2、typedef 为类型取一个新名字
十五、输入&输出
printf()
scanf()
getchar()
putchar()
gets()
puts()
打开文件:
您可以使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE 包含了所有用来控制流的必要的信息。下面是这个函数调用的原型:
FILE *fopen( const char *filename, const char *mode );
mode:r w a r+ w+ a+ rb wb ab
关闭文件 int fclose( FILE *fp );
写入文件:int fputc( int c, FILE *fp ); int fputs( const char *s, FILE *fp );
读取文件:int fgetc( FILE * fp );char *fgets( char *buf, int n, FILE *fp );
十六、预处理器
C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。
参数化的宏:#define square(x) ((x) * (x))
#include <stdio.h>
#define MAX(x,y) ((x) > (y) ? (x) : (y))
int main(void) { printf("Max between 20 and 10 is %d\n", MAX(10, 20)); return 0; }
十七、强制类型转换、错误处理
errno、perror() 和 strerror()
C 语言提供了 perror() 和 strerror() 函数来显示与 errno 相关的文本消息。
perror() 函数显示您传给它的字符串,后跟一个冒号、一个空格和当前 errno 值的文本表示形式。
strerror() 函数,返回一个指针,指针指向当前 errno 值的文本表示形式。
程序退出状态:
通常情况下,程序成功执行完一个操作正常退出的时候会带有值 EXIT_SUCCESS。在这里,EXIT_SUCCESS 是宏,它被定义为 0。
如果程序中存在一种错误情况,当您退出程序时,会带有状态值 EXIT_FAILURE,被定义为 -1。
十八 、递归、可变参数
递归指的是在函数的定义中使用函数自身的方法。
int func(int, ... ) { . . . }
int main() { func(2, 2, 3); func(3, 2, 3, 4); }
十九、内存管理
<stdlib.h>
void *calloc(int num,int size)
void free(void *address)
void *malloc(int num)
void *realloc(void *address,int newsize)
二十、命令行参数
命令行参数是使用 main() 函数参数来处理的,其中,argc 是指传入参数的个数,argv[] 是一个指针数组,指向传递给程序的每个参数。
#include <stdio.h>
int main( int argc, char *argv[] )
{
if( argc == 2 )
{
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 )
{
printf("Too many arguments supplied.\n");
}
else
{
printf("One argument expected.\n");
}
}
二十一、排序算法
1、冒泡排序
2、选择排序
3、插入排序
4、希尔排序
5、归并排序
6、快速排序
说明:来自菜鸟教程的自我学习,https://www.runoob.com/cprogramming/c-tutorial.html。
网友评论