日常学习
Quinf
这个作者很懒,什么都没留下…
展开
-
三种循环语句以及求绝对值 素数
max=(a>b)?a:b真 a赋值给max假 b赋值给maxfabs:求浮点数的绝对值两个求绝对值函数:一个是abs(x)求x的绝对值,结果是整型另一个是fabs(x) x是双精度 ,结果是双精度for(1;2;3;) 语句与1;while2{语句3} 两者无条件等价三种循环语句 whiledo.....while原创 2016-11-02 15:50:35 · 740 阅读 · 0 评论 -
变量
变量的三大特点1.变量的数据类型:主要说明变量占用内存空间大小 如int型。2.变量的作用域:变量的有效性范围,即变量的使用范围。3.变量的存储类型:变量在内存中的存储方式。不同的存储方式影响变量的生命周期。 全局变量与局部变量的区别:1.两者的存储区域不同2.作用域不同3.初始值不同(局部变量未初始化输出的值为垃圾值,全局变量未初始化输出为0)全局变量与局原创 2016-12-07 16:43:06 · 365 阅读 · 0 评论 -
字符串的逆序
逆序:首尾交换 交换到中间停止; int i; char temp; len = strlen(src); for(i = 0;i {temp = *(src + i);*(src + i) = *(src + len - 1 - i);*(src + len - 1 - i) = temp;}原创 2016-11-26 22:26:59 · 248 阅读 · 0 评论 -
十进制整数和小数的转换
整数和小数分别转换。整数部分:22除以2,商继续除以2,得到0为止,★将余数逆序排列★。22 / 2 11 余011/2 5 余 15 /2 2 余 12 /2 1 余 01 /2 0 余 1所以22的二进制是10110!小数部分:0.8125乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,★将整数顺序排列★。0.8125转载 2016-11-26 22:29:20 · 1114 阅读 · 0 评论 -
计算机的组成及内存的初步理解
计算机的三大组成:1.CPU2.内存3.硬盘内存与硬盘的区别:1.内存中保存动态数据,硬盘中保存静态数据。2.断点后内存中的数据丢失,硬盘中的数据不会丢失。3.执行程序时,从硬盘中调用程序,在内存中执行。 如何提高计算机的运行效率?1.单核→双核(成本高)。2.内存2g→4g(相对其他两项最优)。3.提高主频(处理指令的速度)(功耗大)。原创 2016-11-27 13:40:33 · 453 阅读 · 0 评论 -
位操作
位操作一定要操作无符号数unsigned int mask = 0x80000000;// 掩码 右移时用符号位来补位。(无符号号时用0补位)左移时用0来补位。 不引入第三方变量时交换a和b的值 a = a ^ b; a = a + b;b = a ^ b; b = a - b;a = a ^ b; a = a - b; if ( 5 == num)原创 2016-12-25 11:17:45 · 356 阅读 · 0 评论 -
头文件重复包含
#ifdefine 和#ifndefine 用于头文件防止重复包含//头文件防止重复包含//funcA.h#ifdefine FUNCA_H#ifndefine FUNCA_H//头文件内容#endif原创 2016-12-25 11:18:10 · 522 阅读 · 0 评论 -
关键字
register 寄存器变量(优点:省去了cpu从内存中抓取变量的时间)作用:请求编译器将变量尽可能的保存在寄存器中。对象:频繁被访问的对象。注意点1.只能修饰局部变量,不能修饰全局变量和函数。2.可能不是在内存中存储,所以不能用&符号来获得变量的地址。3.必须是cpu所接受的变量类型。 cpu的三大组成部分1.运算器2.控制器3.存储器(寄存器)原创 2016-12-25 11:18:36 · 240 阅读 · 0 评论 -
结构体 共用体 枚举
一些有关结构体的概念 一般将结构体定义在函数外部。 给结构体中字符串赋值时一般要采用strcpystrcpy(stu.name,”zhangsan”); 内存对齐的作用:提高程序的性能,降低了内存效率(产生了内存空洞)4个字节对齐 2个字节对齐 1个字节对齐成员中大于等于4个字节时,以4字节对齐。 #pragma pack(1) 以1个字节对齐s原创 2017-01-14 10:28:58 · 273 阅读 · 0 评论 -
数据结构
模板:管理数据 1增删改查 2存取 链表 栈 队列(存取)树(二叉树 查找树)平衡二叉树 红黑树哈夫曼树 哈希表(增删改查)图 排序 (顺序调整) 为什么需要链表:数组管理空间利用率不高,需要动态管理空间 链表(代表头和不带表头) 1.单链表2.单向循环链表3.循环链表4.双向循环链表 单原创 2017-01-14 10:29:38 · 226 阅读 · 0 评论 -
单链表的操作
#include struct node{ int num; struct node *next;}; typedef struct node Node;typedef struct node * Link; void creat_link(Link *head){ *head = NULL;} void原创 2017-01-14 10:30:11 · 273 阅读 · 0 评论 -
单向循环链表的操作
#include struct node{ int num; struct node *next;};typedef struct node Node;typedef Node * Link; void creat_link(Link *head){ //*head = NULL; *head = (Link)ma原创 2017-01-14 10:30:40 · 337 阅读 · 0 评论 -
如何产生随机数
生成1~n之间的随机数 j = (int)(rand()/RAAND_MAX+1.0)*n + 1); 未设置随机数种子,rand()在调用时自动设随机数种子为1。 srand()用来设置rand()产生随机数的随机数种子没有随机数种子,rand()产生的值每次都一样。 srand((int)time(0));原创 2017-01-14 11:16:47 · 1060 阅读 · 0 评论 -
指针和数组的区别
C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字转载 2016-12-07 16:42:31 · 300 阅读 · 0 评论 -
函数什么时候传地址?什么时候传值?
1.当只使用不修改实参变量对应空间的值,传实参变量名;2.当既使用又修改实参变量对应空间的值,传实参变量对应空间的地址。原创 2016-12-13 11:55:21 · 1789 阅读 · 0 评论 -
malloc relloc calloc
当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 1、检查要访问的虚拟地址是否合法 2、查找/分配一个物理页 3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干) 4、建立映射关系(虚拟地址到物理地址) 重新执行发生缺页中断的那条指令 如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。 内存分配的原理从操作转载 2016-12-06 16:52:28 · 562 阅读 · 0 评论 -
初识Linux系统命令
初识Linux系统命令在linux中有一个一点哲学:一切皆为文件:1.普通文件 2.目录文件 3.设备文件 4.链接文件-开头的为普通文件原创 2016-11-07 15:46:14 · 317 阅读 · 0 评论 -
有关字符组的编程
#include//统计字符串中数字的个数//strlen函数int main(){ int i; int n = 0; char a[50]; printf("plesae input : "); scanf("%s",a); for(i = 0;a[i] != '\0';i++) {原创 2016-11-10 10:36:34 · 238 阅读 · 0 评论 -
数据类型和长度及补码等
bit字节 = 8 bit字 = 4字节 = 32 bit半字 = 2字节 = 16bit(适用于32位操作系统) char:1字节short:2字节int:4字节long:4字节float:4字节double:8字节指针:4字节(保存地址;地址是固定长度:长度由操作系统决定,32位操作系统) 运算符:sizeof(不是函数) :测量原创 2016-11-29 11:02:09 · 343 阅读 · 0 评论 -
C基础
小写字母的ASCII码比大写字母的ASCII码大32。Printf(格式控制,输出表列)一些关于字符长度。需要记忆的东西。Int 2个字节(或者4个字节) 16 位-32768~32767 即-2e15~(2e15-1)。原创 2016-11-01 22:27:38 · 208 阅读 · 0 评论 -
初识GDB和makefile
1.在指定位置停住2.当程序被停住时,可以检查程序状态——变量值GDB3.启动被调试程序。让被调试程序 gcc -g test.c -o test 编译gdb程序加载文件时加-ggdb + test (可执行文件)run运行程序list显示程序内容quit退出break + 行号/+行号if i = 3 在指定行号停止next原创 2016-11-14 19:50:18 · 321 阅读 · 0 评论 -
有关野指针
野指针:随机指向一块内存的指针。野指针造成的错误:内存泄漏(不一定每次都会引起段错误;原因:有时候随机分配时分配到已申请的地址。)。 如何避免野指针:养成良好的编码习惯。1.当一个指针没有指向时,指向NULL。 int* p = NULL;2.当往一个指针指向空间赋值,一定要分配内存空间。 int* p = malloc(sizeof(int));3.检查空间是否分配成原创 2016-12-01 09:26:58 · 259 阅读 · 0 评论 -
初始指针
指针:指针是一个变量 指针的步长:整型指针和字符指针的步长不同(原因:保存类型不同):给地址加1,整型运算符加了4个字节,字符运算符加了1个字节。 &:取地址*:间接运算符 取值运算符:取指针变量对饮的空间 保存的地址对应的内存空间的值; 指向的内存空间:就是这个指针变量对应的内存空间保存的地址对应的内存空间,我们称之为指向的内存空间。 int num = 5原创 2016-12-01 09:31:04 · 313 阅读 · 0 评论 -
C的优缺点
1.嵌入式开发系统为什么选择c?所有的操作系统内核都是采用c语言实现。 2.操作系统为什么采用c语言开发?① 出色的移植性② 能够访问硬件③ 运行效率高 什么是移植性?评判移植性的标准?1.在不同平台下运行。2.从一个平台切换到另一个平台,修改的越少,移植性越高。 访问硬件汇编(低级语言)也可以访问并且效率更高对硬件初识化的时候用汇编语言;原创 2016-11-20 16:24:17 · 1336 阅读 · 0 评论 -
scanf时清除缓冲区的方法
前面输入其他类型 后面输入字符时剔除\n的方法:①ch字符输入前加getchar();②用格式符%*c%c %*c:读入一个字符但忽略它(不给任何变量赋值)③前面加空格 空格%c④在输入前加fflush(stdin);转载 2016-12-02 22:18:49 · 879 阅读 · 0 评论 -
数组
数组名是指针常量,保存着数组首元素的地址。 一维数组名:首元素的地址。 a[i] = *(a+i);a代表着数组首元素的地址;&a 代表数组的地址(对数组名取地址等于数组的地址)*(&a)= a对一维数组的地址取值等于一维数组的首元素的地址。 二维数组名:首个一维数组的地址。 a[i][j] = *(*(a+i)+j);a+i:第i+1个一维数组原创 2016-12-04 21:35:33 · 262 阅读 · 0 评论 -
左右法则
左右法则:先确定变量,接着按着先右后左的顺序看 碰到[]为数组 碰到()为函数 变量:什么类型的变量指针:指向什么类型数组:数组里的元素类型函数:形参为.....返回值为....... 保存地址 称为指针变量保存字符 称为字符变量保存整型 称为整型变量 int*(*(*(*fp1)(int))[10]fp1:函数指针变量,指向形参为int,返回原创 2016-11-22 20:36:10 · 387 阅读 · 0 评论 -
段错误
段错误的三个原因1.野指针。2.是否对零地址的指针操作。3.scanf()赋值时忽略了&。 如何检查段错误?(特点:编译没有错,哪一行错在哪一行停。)1.gcc -g demo.c gdb a.out run2.每一行下面加 printf(“%s:%d\n”,__fun__,__LINE__); 两个下划线 函数名 行号原创 2016-12-06 16:50:34 · 408 阅读 · 0 评论 -
如何产生随机数
生成1~n之间的随机数 j = (int)(rand()/RAAND_MAX+1.0)*n + 1); 未设置随机数种子,rand()在调用时自动设随机数种子为1。 srand()用来设置rand()产生随机数的随机数种子没有随机数种子,rand()产生的值每次都一样。 srand((int)time(0));原创 2017-01-18 08:53:24 · 308 阅读 · 0 评论