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 · 280 阅读 · 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 · 188 阅读 · 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 · 190 阅读 · 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 · 294 阅读 · 0 评论 -
小甲鱼 P57 读写文件1
小甲鱼 P57 读写文件1 读写单个字符fgetc()函数:用于从文件流中读取下一个字符并推进文件的位置指示器(用来指示接下来读写的下一个字符的位置)fputc()函数:用于将一个字符写入到指定的文件中并推进文件的位置指示器 读写单个字符:#include <stdio.h>#include <stdlib.h>int main(void...原创 2018-10-09 16:19:27 · 225 阅读 · 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 · 308 阅读 · 0 评论 -
小甲鱼 P56 打开和关闭文件
小甲鱼 P56 打开和关闭文件 在完成对一个文件的读写操作之后,你必须将其关闭。 fopen 函数用于打开一个文件并返回文件指针FILE *fopen(const char *path, const char *mode)path:指定待打开的文件路径和文件名(支持相对路径,绝对路径),如果只给出文件名而不包含路径,则表示该文件在当前文件夹中mode:打开模式。只读...原创 2018-10-08 17:25:05 · 223 阅读 · 0 评论 -
小甲鱼 P53 位域---标志位变量
小甲鱼 P53 位域---标志位变量 标志位变量只存放0或1,表示真或假的变量。 位域(位段,位字段)允许把一个字节拆开来使用,把一个字节的二进位划分不同的区域,并指定每个区域的位数。例如,上图所示,这个字节有8个位,划分为三个区域。第一个区域a占了4个位,第二个区域b,第三个区域c占了2个位。 位域的使用:在结构体定义时,在结构体成员...原创 2018-10-07 20:53:47 · 371 阅读 · 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 · 222 阅读 · 0 评论 -
小甲鱼 P51 共用体
小甲鱼 P51 共用体 共用体(联合体,联合类型)定义方式: 共用体的所有成员共享同一个内存地址!!不能同时打印共用体三者的值!!#include <stdio.h>#include <string.h>//共用体,共用同一个内存地址 union Test{ int i; double pi; char str[6];...原创 2018-10-06 10:40:19 · 260 阅读 · 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 · 457 阅读 · 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 · 368 阅读 · 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 · 862 阅读 · 4 评论 -
小甲鱼 P47 单链表3---单链表插入和删除
小甲鱼 P47 单链表3---单链表插入和删除 单链表和数组相比较,最大的优势是插入元素到指定位置的效率。 (单链表插入)让用户输入若干个整数,按顺序插入单链表之中:比如将3插入2和4之间。对于单链表,改变指针就可以了。先抹掉2指向4的指针,将2改为指向3,3指向4,两个步骤。代码如下:#include <stdio.h>#include <...原创 2018-10-04 14:38:13 · 1155 阅读 · 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 · 592 阅读 · 0 评论 -
小甲鱼 P45 单链表1---头插法
小甲鱼 P45 单链表1---头插法 单链表包含两个域:信息域、指针域信息域:存放链表节点的内容 指针域:指向下一个 和它一样的节点结束:直到最后一个节点的指针域为NULL头指针:指向第一个节点连接:链表通过指针进行连接的 单链表声明struct Book{ //信息域 char title[128]; char author[40]; ...原创 2018-10-03 14:15:45 · 983 阅读 · 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 · 561 阅读 · 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 · 434 阅读 · 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 · 291 阅读 · 0 评论 -
小甲鱼 P39 C语言的内存布局规律 代码段 数据段 bss段 堆 栈
小甲鱼 P39 C语言的内存布局规律 代码段(Text segment):通常是指用来存放程序执行代码的一块内存区域。数据段:(Initialized data segment):通常用来存放已经初始化的全局变量和局部静态变量BSS段:通常是指用来存放程序中未初始化的全局变量的一块内存区域。#include <stdio.h>int globa...原创 2018-10-01 21:01:29 · 475 阅读 · 0 评论 -
小甲鱼 P37 38 动态内存管理1 2
小甲鱼 P37 38 动态内存管理1 2 下面的库函数包含在stdlib.hmalloc:申请动态内存空间free:释放动态内存空间calloc:申请并初始化一系列内存空间realloc:重新分配内存空间 malloc函数原型:void *malloc(size_t size);(void类型可以被转换成任何一种类型)malloc函数向系统申请分配s...原创 2018-10-01 11:57:11 · 299 阅读 · 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 · 438 阅读 · 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 · 502 阅读 · 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 · 505 阅读 · 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 · 699 阅读 · 0 评论 -
C语言字符串指针(指向字符串的指针)
http://c.biancheng.net/cpp/html/80.htmlC语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下:#include <stdio.h> #include <string.h> int main(){ char str[] = ...转载 2018-09-29 14:35:37 · 4693 阅读 · 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 · 203 阅读 · 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 · 204 阅读 · 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 · 233 阅读 · 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 · 308 阅读 · 0 评论 -
小甲鱼 P24 指针和二维数组
小甲鱼 P24 指针和二维数组 二维数组:是一维数组的线性扩展 array表示的是什么?array代表指向包含5个元素的指针(用一维数组的角度来理解) *(array+1)表示的是什么?*(array+1)表示:array+1的解引用,相当于array[1](语法糖),指向第二行的首地址解引用:取值运算符(*)作用于地址之上(array+1),取出地...原创 2018-09-22 20:34:34 · 334 阅读 · 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 · 320 阅读 · 0 评论