C语言
mainn
本人是移动互联应用技术专业,选择嵌入式开发方向。声明:博文的编写,主要参考网上资料,并结合个人见解,仅供学习、交流使用,如有侵权,请联系博主删除。...
展开
-
C语言 输出参数 和 输入参数const
输入参数就是函数运算需要的数据,输出参数就是运算结果 stringcopy(char *a,const char *b)是一个字符串的拷贝函数b是拷贝的原字符串,即输入参数,给b前面加const 是为了不让函数内部改动b的值,起到一个保护作用。a是需要拷贝的字符串,即输出参数。整个函数其实就是将b的值复制给a。const是常量的标志,可以防止某些变量被非法更改,在高效的编程...原创 2018-11-19 16:12:10 · 1692 阅读 · 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 · 181 阅读 · 0 评论 -
小甲鱼 P53 位域---标志位变量
小甲鱼 P53 位域---标志位变量 标志位变量只存放0或1,表示真或假的变量。 位域(位段,位字段)允许把一个字节拆开来使用,把一个字节的二进位划分不同的区域,并指定每个区域的位数。例如,上图所示,这个字节有8个位,划分为三个区域。第一个区域a占了4个位,第二个区域b,第三个区域c占了2个位。 位域的使用:在结构体定义时,在结构体成员...原创 2018-10-07 20:53:47 · 338 阅读 · 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 · 200 阅读 · 0 评论 -
小甲鱼 P51 共用体
小甲鱼 P51 共用体 共用体(联合体,联合类型)定义方式: 共用体的所有成员共享同一个内存地址!!不能同时打印共用体三者的值!!#include <stdio.h>#include <string.h>//共用体,共用同一个内存地址 union Test{ int i; double pi; char str[6];...原创 2018-10-06 10:40:19 · 236 阅读 · 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 · 430 阅读 · 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 · 346 阅读 · 0 评论 -
小甲鱼 P24 指针和二维数组
小甲鱼 P24 指针和二维数组 二维数组:是一维数组的线性扩展 array表示的是什么?array代表指向包含5个元素的指针(用一维数组的角度来理解) *(array+1)表示的是什么?*(array+1)表示:array+1的解引用,相当于array[1](语法糖),指向第二行的首地址解引用:取值运算符(*)作用于地址之上(array+1),取出地...原创 2018-09-22 20:34:34 · 306 阅读 · 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 · 186 阅读 · 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 · 805 阅读 · 4 评论 -
小甲鱼 P47 单链表3---单链表插入和删除
小甲鱼 P47 单链表3---单链表插入和删除 单链表和数组相比较,最大的优势是插入元素到指定位置的效率。 (单链表插入)让用户输入若干个整数,按顺序插入单链表之中:比如将3插入2和4之间。对于单链表,改变指针就可以了。先抹掉2指向4的指针,将2改为指向3,3指向4,两个步骤。代码如下:#include <stdio.h>#include <...原创 2018-10-04 14:38:13 · 1124 阅读 · 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 · 560 阅读 · 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 · 287 阅读 · 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 · 4659 阅读 · 0 评论 -
#define和const的区别
https://blog.csdn.net/yi_ming_he/article/details/70405364这个区别用从几个角度来说:角度1: 就定义常量说的话: const 定义的常数是变量 也带类型, #define 定义的只是个常数 不带类型。角度2: 就起作用的阶段而言: define是在编译的预处理阶段起作用,而const是在 编译、运行的时候起作用。角度3...转载 2018-11-01 09:02:09 · 261 阅读 · 0 评论 -
C语言 swap交换值的方式
C语言 swap交换值的方式 方式一:(中间值)void swap(int *x, int *y){ int temp; temp = *x; *x = *y; *y = temp;} 方式二:(异或)void swap(int *x, int *y){ *x ^= *y; *y ^= *x; *x ^= *y;} 方式三:(先合计,后减)...原创 2018-10-31 17:11:01 · 1506 阅读 · 0 评论 -
C语言 指针实现字符串连接
C语言 指针实现字符串连接#include <stdio.h>#include <string.h>int main(){ char s1[100], s2[100], s3[100]; char *p1=NULL; char *p2=NULL; char *q=s3;//将字符指针 指向 字符数组s3 char *result = q; prin...原创 2018-10-31 16:11:03 · 11117 阅读 · 0 评论 -
小甲鱼 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 · 255 阅读 · 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 · 170 阅读 · 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 · 169 阅读 · 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 · 271 阅读 · 0 评论 -
小甲鱼 P57 读写文件1
小甲鱼 P57 读写文件1 读写单个字符fgetc()函数:用于从文件流中读取下一个字符并推进文件的位置指示器(用来指示接下来读写的下一个字符的位置)fputc()函数:用于将一个字符写入到指定的文件中并推进文件的位置指示器 读写单个字符:#include <stdio.h>#include <stdlib.h>int main(void...原创 2018-10-09 16:19:27 · 205 阅读 · 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 · 481 阅读 · 0 评论 -
小甲鱼 P56 打开和关闭文件
小甲鱼 P56 打开和关闭文件 在完成对一个文件的读写操作之后,你必须将其关闭。 fopen 函数用于打开一个文件并返回文件指针FILE *fopen(const char *path, const char *mode)path:指定待打开的文件路径和文件名(支持相对路径,绝对路径),如果只给出文件名而不包含路径,则表示该文件在当前文件夹中mode:打开模式。只读...原创 2018-10-08 17:25:05 · 198 阅读 · 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 · 480 阅读 · 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 · 651 阅读 · 0 评论 -
小甲鱼 P45 单链表1---头插法
小甲鱼 P45 单链表1---头插法 单链表包含两个域:信息域、指针域信息域:存放链表节点的内容 指针域:指向下一个 和它一样的节点结束:直到最后一个节点的指针域为NULL头指针:指向第一个节点连接:链表通过指针进行连接的 单链表声明struct Book{ //信息域 char title[128]; char author[40]; ...原创 2018-10-03 14:15:45 · 947 阅读 · 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 · 529 阅读 · 2 评论 -
C语言 goto语句
很多书籍都说不建议使用goto语句,但是我觉得可以使用的,关键是用在哪里。 C 语言中 goto 语句的语法:goto label;...label: statement; label;...label: statement; 流程图: 程序: #include <stdio.h>int main(void){ int a =...原创 2018-06-18 14:42:28 · 3861 阅读 · 0 评论 -
结构体嵌套自身的指针 单向链表
https://blog.csdn.net/huguozhang1986/article/details/46816175#include <stdio.h>struct Person{ char *name; int age; //嵌套自己类型的指针 struct Person *child; }; int main(void){ struct Person k...转载 2018-06-16 16:25:04 · 1240 阅读 · 1 评论 -
结构体的嵌套问题
https://www.cnblogs.com/renyuan/archive/2012/11/30/2796792.html结构体的自引用(self reference),就是在结构体内部,包含指向自身类型结构体的指针。结构体的相互引用(mutual reference),就是说在多个结构体中,都包含指向其他结构体的指针。1. 自引用结构体1.1 不使用typedef时错误的方式:struct ...转载 2018-06-15 08:37:36 · 3979 阅读 · 0 评论 -
C语言经典面试题 与 C语言面试宝典
https://blog.csdn.net/qq_26093511/article/details/788744241 预处理问题1:什么是预编译?何时需要预编译?答:预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。主要处理#开头的指令。如拷贝#include包含的文件代码、替换#define定义的宏、条件编译#if等。.何时需要预编译:1、总是使用不经常改动的大型代码...转载 2018-05-07 21:18:38 · 605 阅读 · 0 评论 -
C语言 系统函数和库函数的区别
https://blog.csdn.net/eleanor_12/article/details/53560830 统调用:是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。可以说是操作系统留给用户程序的一个接口。再来说一下,linux内核是单内核,结构紧凑,执行速度快,各个模块之间是直接调用的关系。放...转载 2018-05-14 13:59:16 · 3400 阅读 · 0 评论 -
通过指针访问变量和直接通过变量名访问变量,谁更快?
对于变量,地址在编译时就可以确定,生成直接寻址指令访问这个变量;对于指针变量,编译时它的值一般不能确定,需要用额外的存储单元(例如寄存器)保存,生成间接寻址指令访问指针指向的对象。int a=10;int *p=&a;首先,a变量存在内存里的一块位置这个位置里包含a变量的名称和数值假设这个地址的地址号是1001,那么计算机就要先找到a对应的地址号也就是1001然后在从里面取出a的值......原创 2018-05-09 19:50:51 · 5515 阅读 · 2 评论 -
标准C的标记化结构初始化语法
标准C的标记化结构初始化语法以前在看Linux代码时,就对它的结构体初始化写法感到奇怪,所有的初始化代码都写清了变量名,并且变量名前面还有一个诡异的点。最近学习Linux设备驱动,又遇到了,就查了一下,发现自己的知识果然纰漏不少,此种初始化写法并不是什么特殊的代码风格,而是所谓的C语言标记化结构初始化语法(designated initializer),而且还是一个ISO标准。[cpp] view...转载 2018-04-21 14:55:00 · 249 阅读 · 0 评论 -
C语言 static变量 函数
static 变量#include "iostream.h"int p(int x){static int y=1;y=y+1;return (x+y);}int main(){cout<<p(1)<<endl;cout<<p(2)<<endl;} 答案是3和5,为什么不是3和4呢? c语言的static变...原创 2018-05-02 19:14:14 · 537 阅读 · 0 评论 -
指针函数与函数指针的区别
来自:http://nevel.cnblogs.com/p/6370264.html在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。今天我们从头把它搞清楚 首先它们之间的定义: 1、指针函数是指带指针的函数,即本质是一个函数,函数返回类型是某一类型的指针。类型标识符 *函数名(参数...转载 2018-04-19 15:33:42 · 126 阅读 · 0 评论 -
C指向结构体变量的指针(结构指针变量)
一个指针变量当用来指向一个结构体变量时,称之为结构体指针变量。结构体指针变量中的值是所指向的结构变量的首地址。通过结构指针变量即可访问该结构的变量。结构指针变量说明的一般形式如下:struct 结构名 *结构指针变量名 结构名和结构变量时两个不同的概念,不能混淆。结构名只能表示一个结构形式,编译系统并不会对它分配内存空间。只有当某变量被说明为这种类型的结构时,才对该变量分配存储空间。...原创 2018-04-22 17:03:32 · 3904 阅读 · 1 评论 -
C语言 三目运算符
https://blog.csdn.net/yuanzhuohang/article/details/5176303 如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。条件运算符为?和:,它是一个三目运算符,即有三个参与运算的量。由条件运算符组成条件表达式的一般形式为:表达式1? 表达式2: 表达式3 其求值规则为:如果表...转载 2018-04-15 15:18:21 · 914 阅读 · 0 评论 -
C语言 static修饰变量
https://blog.csdn.net/dlutbrucezhang/article/details/9786781 Static在C语言里面有两个作用,第一个是修饰变量,第二个是修饰函数。 1、Static修饰变量按照作用范围的不同,变量分为局部变量和全局变量。如果用static修饰变量,不论这个变量是全局的还是局部的都是存储在静态数据区。下面分开来讲: ¨...转载 2018-04-15 10:25:24 · 417 阅读 · 0 评论