C语言
C语言的总结
mainn
本人是移动互联应用技术专业,选择嵌入式开发方向。声明:博文的编写,主要参考网上资料,并结合个人见解,仅供学习、交流使用,如有侵权,请联系博主删除。...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
小甲鱼 P61 IO缓冲区
小甲鱼 P61 IO缓冲区 IO缓冲区 #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp; if ((fp = fopen("output.txt", "w")) == NULL) { perror("打开文件失败,原因是"); exit(EXIT_FA...原创 2018-10-10 09:21:54 · 293 阅读 · 0 评论 -
小甲鱼 P60 标准流和错误处理
小甲鱼 P60 标准流和错误处理 标准流 文件流: 标准输入流(stdin) 标准输出流(stdout) 标准错误输出流(stderr) #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp; if ((fp = fopen("yagenerdoubucunzaide...原创 2018-10-09 19:48:24 · 202 阅读 · 0 评论 -
小甲鱼 P59 随机读写文件
小甲鱼 P59 随机读写文件 ftell()函数:获取位置指示器的值 #include <stdio.h> #include <stdlib.h> int main(void) { //ftell返回值是long类型 FILE *fp; if ((fp = fopen("hello.txt", "w")) == NULL) { printf(...原创 2018-10-09 19:06:54 · 200 阅读 · 0 评论 -
小甲鱼 P58 读写文件2
小甲鱼 P58 读写文件2 格式化读写文件 fscanf()函数:读取 fprintf()函数:写入 将当前的日期读取之后,写入到新创建的文件里面 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { FILE *fp; struct tm *...原创 2018-10-09 17:11:28 · 301 阅读 · 0 评论 -
小甲鱼 P57 读写文件1
小甲鱼 P57 读写文件1 读写单个字符 fgetc()函数:用于从文件流中读取下一个字符并推进文件的位置指示器(用来指示接下来读写的下一个字符的位置) fputc()函数:用于将一个字符写入到指定的文件中并推进文件的位置指示器 读写单个字符: #include <stdio.h> #include <stdlib.h> int main(void...原创 2018-10-09 16:19:27 · 233 阅读 · 0 评论 -
小甲鱼 P55 移位和位操作的应用
小甲鱼 P55 移位和位操作的应用 左移位运算符 11001010 << 2 右移位运算符 11001010 >> 2 #include <stdio.h> int main(void) { int value = 1; while (value < 1024) { //左移,每左移一位,是乘以2 ...原创 2018-10-08 10:57:32 · 324 阅读 · 0 评论 -
小甲鱼 P56 打开和关闭文件
小甲鱼 P56 打开和关闭文件 在完成对一个文件的读写操作之后,你必须将其关闭。 fopen 函数用于打开一个文件并返回文件指针 FILE *fopen(const char *path, const char *mode) path:指定待打开的文件路径和文件名(支持相对路径,绝对路径),如果只给出文件名而不包含路径,则表示该文件在当前文件 夹中 mode:打开模式。只读...原创 2018-10-08 17:25:05 · 236 阅读 · 0 评论 -
小甲鱼 P53 位域---标志位变量
小甲鱼 P53 位域---标志位变量 标志位变量 只存放0或1,表示真或假的变量。 位域(位段,位字段) 允许把一个字节拆开来使用,把一个字节的二进位划分不同的区域,并指定每个区域的位数。 例如,上图所示,这个字节有8个位,划分为三个区域。第一个区域a占了4个位,第二个区域b,第三个区域c占了2个位。 位域的使用: 在结构体定义时,在结构体成员...原创 2018-10-07 20:53:47 · 386 阅读 · 0 评论 -
小甲鱼 P52 枚举类型enum
小甲鱼 P52 枚举类型enum localtime 函数---获取当前的本地时间和日期 其实lovaltime 函数是将一个time_t类型的值转换成具体的本地时间和日期,所以需要先使用time函数来返回表示当前时间的time_t。 localtime的返回值是指向tm结构体的指针。 struct tm { int tm_sec; /* 秒,范围为0~59,60的话表...原创 2018-10-06 15:33:01 · 231 阅读 · 0 评论 -
小甲鱼 P51 共用体
小甲鱼 P51 共用体 共用体(联合体,联合类型) 定义方式: 共用体的所有成员共享同一个内存地址!! 不能同时打印共用体三者的值!! #include <stdio.h> #include <string.h> //共用体,共用同一个内存地址 union Test { int i; double pi; char str[6];...原创 2018-10-06 10:40:19 · 279 阅读 · 0 评论 -
小甲鱼 P50 进阶typedef---比较复杂的类型声明
小甲鱼 P50 进阶typedef---比较复杂的类型声明 在编程中使用typedef的目的: 1、给变量起一个容易记住且意义明确的别名。 2、简化一些比较复杂的类型声明。 数组指针(指向数组的指针): int (*ptr)[3];//数组指针 使用typedef 为 数组指针 取个别名:typedef int (*PTR_TO_ARRAY)[3]; #inclu...原创 2018-10-05 19:21:02 · 474 阅读 · 0 评论 -
小甲鱼 P49 typedef---结构体
小甲鱼 P49 typedef typedef:为类型取别名 typedef 与 结构体: 下面的代码中,使用typedef为结构体Date取个别名为DATE,相当于DATE = struct Date。 (我们可以这样看,typedef struct Date{...} DATE) 在给结构体取别名时,同时定义一个指针*PDATE,相当于PDATE=struct Date...原创 2018-10-05 16:48:41 · 380 阅读 · 0 评论 -
小甲鱼 P48 内存池---通讯录管理程序--单链表的应用
小甲鱼 P48 内存池---通讯录管理程序 小甲鱼 P45 单链表1---头插法 小甲鱼 P46 单链表2---尾插法和遍历 小甲鱼 P47 单链表3---单链表插入和删除 通讯录管理程序 #include <stdio.h> #include <stdlib.h> #include <string.h> struct Person...原创 2018-10-04 16:24:08 · 878 阅读 · 4 评论 -
小甲鱼 P47 单链表3---单链表插入和删除
小甲鱼 P47 单链表3---单链表插入和删除 单链表和数组相比较,最大的优势是插入元素到指定位置的效率。 (单链表插入)让用户输入若干个整数,按顺序插入单链表之中: 比如将3插入2和4之间。对于单链表,改变指针就可以了。先抹掉2指向4的指针,将2改为指向3,3指向4,两个步骤。 代码如下: #include <stdio.h> #include <...原创 2018-10-04 14:38:13 · 1162 阅读 · 0 评论 -
小甲鱼 P46 单链表2---尾插法和遍历
小甲鱼 P46 单链表2---尾插法和遍历 单链表---尾插法 核心代码: if (*library != NULL) { temp = *library; // 定位单链表的尾部位置 while (temp->next != NULL) { temp = temp->next; } //插入数据 temp->next ...原创 2018-10-03 19:28:24 · 603 阅读 · 0 评论 -
小甲鱼 P45 单链表1---头插法
小甲鱼 P45 单链表1---头插法 单链表包含两个域:信息域、指针域 信息域:存放链表节点的内容 指针域:指向下一个 和它一样的节点 结束:直到最后一个节点的指针域为NULL 头指针:指向第一个节点 连接:链表通过指针进行连接的 单链表声明 struct Book { //信息域 char title[128]; char author[40]; ...原创 2018-10-03 14:15:45 · 991 阅读 · 1 评论 -
小甲鱼 P44 传递结构体变量和结构体指针
小甲鱼 P44 传递结构体变量和结构体指针 两个结构体变量能够直接赋值 #include <stdio.h> int main() { struct Test { int x; int y; }t1, t2; t1.x = 3; t1.y = 4; t2 = t1; printf("t2.x = %d, t2.y = %d\n", t2....原创 2018-10-02 20:23:08 · 577 阅读 · 2 评论 -
小甲鱼 P43 结构体数组和结构体指针
小甲鱼 P43 结构体数组和结构体指针 结构体嵌套 #include <stdio.h> struct Date { int year; int month; int day; }; struct Book//Book结构体名 { char title[128]; char author[40]; float price; struct Date dat...原创 2018-10-02 17:25:17 · 452 阅读 · 0 评论 -
小甲鱼 P42 结构体
小甲鱼 P42 结构体 结构体声明: struct 结构体名称 { 结构体成员1; 结构体成员2; ... ... }; struct Book { char title[128]; char author[40]; float price; unsigned int date; char publisher[40]; }; ...原创 2018-10-02 16:19:21 · 305 阅读 · 0 评论 -
小甲鱼 P39 C语言的内存布局规律 代码段 数据段 bss段 堆 栈
小甲鱼 P39 C语言的内存布局规律 代码段(Text segment): 通常是指用来存放程序执行代码的一块内存区域。 数据段:(Initialized data segment): 通常用来存放已经初始化的全局变量和局部静态变量 BSS段: 通常是指用来存放程序中未初始化的全局变量的一块内存区域。 #include <stdio.h> int globa...原创 2018-10-01 21:01:29 · 499 阅读 · 0 评论 -
小甲鱼 P37 38 动态内存管理1 2
小甲鱼 P37 38 动态内存管理1 2 下面的库函数包含在stdlib.h malloc:申请动态内存空间 free:释放动态内存空间 calloc:申请并初始化一系列内存空间 realloc:重新分配内存空间 malloc 函数原型:void *malloc(size_t size);(void类型可以被转换成任何一种类型) malloc函数向系统申请分配s...原创 2018-10-01 11:57:11 · 307 阅读 · 0 评论 -
小甲鱼 P36 快速排序
小甲鱼 P36 快速排序 #include <stdio.h> void quick_sort(int array[], int left, int right) { int i = left, j = right; int temp;//临时值 int pivot;//基准点 pivot = array[(left + right)/2];//基准点 ...原创 2018-09-30 20:10:15 · 458 阅读 · 0 评论 -
小甲鱼 P34 35 递归 汉诺塔
小甲鱼 P34 35 递归 汉诺塔 递归必须要有结束条件,否则程序将崩溃!! #include <stdio.h> void recursion(void); void recursion(void) { static int count = 10; printf("Hi!\n"); if (--count)//打印十次 { recursion();...原创 2018-09-30 15:57:21 · 522 阅读 · 0 评论 -
小甲鱼 P30 指针函数和函数指针
小甲鱼 P30 指针函数和函数指针 指针函数 (使用指针变量作为函数的返回值) #include <stdio.h> char *getWord(char); char *getWord(char c)//返回值类型是字符指针 { switch(c) { case 'A':return "Apple"; case 'B':return "Banana";...原创 2018-09-29 15:01:33 · 518 阅读 · 0 评论 -
C语言字符数组和字符串
http://c.biancheng.net/cpp/html/2921.html 用来存放字符的数组称为字符数组,例如: char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a','m'}; // 给部分数组元素赋值 char d[]={'c',...转载 2018-09-29 14:37:09 · 717 阅读 · 0 评论 -
C语言字符串指针(指向字符串的指针)
http://c.biancheng.net/cpp/html/80.html C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下: #include <stdio.h> #include <string.h> int main(){ char str[] = ...转载 2018-09-29 14:35:37 · 4719 阅读 · 0 评论 -
小甲鱼 P29 参数和指针
小甲鱼 P29 参数和指针 一个函数仅实现一个功能 类型名 函数名(参数列表) { 函数体 } 形参和实参 形参:形式参数 实参:实际参数 传值和传址(指针) #include <stdio.h> void swap(int *x, int *y); void swap(int *x, int *y) { int te...原创 2018-09-29 08:38:07 · 225 阅读 · 0 评论 -
小甲鱼 P27 常量和指针
小甲鱼 P27 常量和指针 常量:520,'a',3.14,#define PI 3.14 常量的值不可以改变,变量的值可以改变。 使用const关键字修饰,可以将变量 变成 具备常量的特性。(把变量变成只读,而不能写入) #include <stdio.h> int main() { const float pi = 3.14;//这个变量已经失去写入修改的...原创 2018-09-27 18:45:52 · 224 阅读 · 0 评论 -
小甲鱼 P26 指向指针的指针
小甲鱼 P26 指向指针的指针 指向指针的指针 pp存放着p的地址 num的地址存放在p里面 pp的一层解引用得到p的值,也就是num的地址 #include <stdio.h> int main() { int num = 520; int *p = &num; int **pp = &p; printf("num: %d\n", ...原创 2018-09-23 20:52:43 · 244 阅读 · 0 评论 -
小甲鱼 P25 void指针和NULL指针
小甲鱼 P25 void指针和NULL指针 void指针(尽量避免使用,容易出错) void指针:通用指针。就是可以指向任意类型的数据,也就是说,任何类型的指针都可以赋值给void指针 #include <stdio.h> int main(void) { int num = 1024; int *pi = &num; char *ps = "Happy";...原创 2018-09-23 14:36:47 · 324 阅读 · 0 评论 -
小甲鱼 P24 指针和二维数组
小甲鱼 P24 指针和二维数组 二维数组:是一维数组的线性扩展 array表示的是什么? array代表指向包含5个元素的指针(用一维数组的角度来理解) *(array+1)表示的是什么? *(array+1)表示:array+1的解引用,相当于array[1](语法糖),指向第二行的首地址 解引用:取值运算符(*)作用于地址之上(array+1),取出地...原创 2018-09-22 20:34:34 · 348 阅读 · 0 评论 -
小甲鱼 P22 P23 指针和数组
指针和数组 1.数组名是数组第一个元素的地址 2.数组地址=数组名=数组第一个元素的地址 3.指向数组的指针 char *p; p=a; p=&a[0]; 4.p+1并不是简单地将地址加1,而是指向数组的下一个元素 指针和数组的区别 字符指针变量是一个左值,数组名是地址常量 实验一:判断有多少个字符: #include <stdio.h> int ...原创 2018-09-10 19:49:12 · 335 阅读 · 0 评论