自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 如何产生随机数

生成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 292

原创 如何产生随机数

生成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 1017

原创 双向循环链表的操作

#include  struct node {    int num;     struct node *prior;    struct node *next;}; typedef struct node Node;typedef Node * DLink; void create_d_link(DLink *head){    *he

2017-01-14 10:31:20 314

原创 单向循环链表的操作

#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 324

原创 单链表的操作

#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 257

原创 数据结构

模板:管理数据 1增删改查               2存取 链表 栈 队列(存取)树(二叉树 查找树)平衡二叉树 红黑树哈夫曼树 哈希表(增删改查)图 排序 (顺序调整) 为什么需要链表:数组管理空间利用率不高,需要动态管理空间 链表(代表头和不带表头)    1.单链表2.单向循环链表3.循环链表4.双向循环链表 单

2017-01-14 10:29:38 219

原创 结构体 共用体 枚举

一些有关结构体的概念 一般将结构体定义在函数外部。 给结构体中字符串赋值时一般要采用strcpystrcpy(stu.name,”zhangsan”); 内存对齐的作用:提高程序的性能,降低了内存效率(产生了内存空洞)4个字节对齐  2个字节对齐  1个字节对齐成员中大于等于4个字节时,以4字节对齐。 #pragma pack(1) 以1个字节对齐s

2017-01-14 10:28:58 263

原创 关键字

register  寄存器变量(优点:省去了cpu从内存中抓取变量的时间)作用:请求编译器将变量尽可能的保存在寄存器中。对象:频繁被访问的对象。注意点1.只能修饰局部变量,不能修饰全局变量和函数。2.可能不是在内存中存储,所以不能用&符号来获得变量的地址。3.必须是cpu所接受的变量类型。 cpu的三大组成部分1.运算器2.控制器3.存储器(寄存器)

2016-12-25 11:18:36 231

原创 头文件重复包含

#ifdefine 和#ifndefine  用于头文件防止重复包含//头文件防止重复包含//funcA.h#ifdefine FUNCA_H#ifndefine FUNCA_H//头文件内容#endif

2016-12-25 11:18:10 487

原创 位操作

位操作一定要操作无符号数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 347

原创 函数什么时候传地址?什么时候传值?

1.当只使用不修改实参变量对应空间的值,传实参变量名;2.当既使用又修改实参变量对应空间的值,传实参变量对应空间的地址。

2016-12-13 11:55:21 1768

原创 函数的执行过程

1.通过函数名找到函数入口2.给形参分配空间3.传值4.执行函数体语句5.返回,释放空间

2016-12-13 11:52:37 300

原创 c语言中为何提出了指针的概念?

1.指针能够直接访问硬件2.提高空间利用率3.访问更灵活

2016-12-13 11:48:43 616 1

原创 变量

变量的三大特点1.变量的数据类型:主要说明变量占用内存空间大小 如int型。2.变量的作用域:变量的有效性范围,即变量的使用范围。3.变量的存储类型:变量在内存中的存储方式。不同的存储方式影响变量的生命周期。 全局变量与局部变量的区别:1.两者的存储区域不同2.作用域不同3.初始值不同(局部变量未初始化输出的值为垃圾值,全局变量未初始化输出为0)全局变量与局

2016-12-07 16:43:06 355

转载 指针和数组的区别

C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。    数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字

2016-12-07 16:42:31 290

转载 malloc relloc calloc

当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 1、检查要访问的虚拟地址是否合法 2、查找/分配一个物理页 3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干) 4、建立映射关系(虚拟地址到物理地址) 重新执行发生缺页中断的那条指令 如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。 内存分配的原理从操作

2016-12-06 16:52:28 550

原创 段错误

段错误的三个原因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 400

原创 数组

数组名是指针常量,保存着数组首元素的地址。 一维数组名:首元素的地址。 a[i] = *(a+i);a代表着数组首元素的地址;&a 代表数组的地址(对数组名取地址等于数组的地址)*(&a)= a对一维数组的地址取值等于一维数组的首元素的地址。 二维数组名:首个一维数组的地址。 a[i][j] = *(*(a+i)+j);a+i:第i+1个一维数组

2016-12-04 21:35:33 249

转载 scanf时清除缓冲区的方法

前面输入其他类型 后面输入字符时剔除\n的方法:①ch字符输入前加getchar();②用格式符%*c%c     %*c:读入一个字符但忽略它(不给任何变量赋值)③前面加空格  空格%c④在输入前加fflush(stdin);

2016-12-02 22:18:49 866

原创 初始指针

指针:指针是一个变量 指针的步长:整型指针和字符指针的步长不同(原因:保存类型不同):给地址加1,整型运算符加了4个字节,字符运算符加了1个字节。 &:取地址*:间接运算符  取值运算符:取指针变量对饮的空间 保存的地址对应的内存空间的值; 指向的内存空间:就是这个指针变量对应的内存空间保存的地址对应的内存空间,我们称之为指向的内存空间。 int num = 5

2016-12-01 09:31:04 304

原创 有关野指针

野指针:随机指向一块内存的指针。野指针造成的错误:内存泄漏(不一定每次都会引起段错误;原因:有时候随机分配时分配到已申请的地址。)。 如何避免野指针:养成良好的编码习惯。1.当一个指针没有指向时,指向NULL。  int* p = NULL;2.当往一个指针指向空间赋值,一定要分配内存空间。  int* p = malloc(sizeof(int));3.检查空间是否分配成

2016-12-01 09:26:58 240

原创 数据类型和长度及补码等

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 333

原创 计算机的组成及内存的初步理解

计算机的三大组成:1.CPU2.内存3.硬盘内存与硬盘的区别:1.内存中保存动态数据,硬盘中保存静态数据。2.断点后内存中的数据丢失,硬盘中的数据不会丢失。3.执行程序时,从硬盘中调用程序,在内存中执行。 如何提高计算机的运行效率?1.单核→双核(成本高)。2.内存2g→4g(相对其他两项最优)。3.提高主频(处理指令的速度)(功耗大)。 

2016-11-27 13:40:33 436

转载 十进制整数和小数的转换

整数和小数分别转换。整数部分: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 1078

原创 字符串的逆序

逆序:首尾交换  交换到中间停止; 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 232

转载 理解复杂的C-C++声明

介绍  曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的 C/C++声明:我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地 理解任何C/C++声明的“右左法则”。需要强调一下的是,复杂的C/C

2016-11-24 14:29:39 206

转载 c标准

每个标准的特性:K&RC:特点:结构、长整数、无符号整数C99对C89的改变    1、增加restrict指针  C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的

2016-11-23 22:14:23 335

原创 变量a进行定义

a  int a;b  int *a;c  int **a;d  int a[10];e  int *a[10];f  int (*a)[10];g  int *a(int b);h  int (*a[10])(int b);

2016-11-22 20:39:39 570

原创 左右法则

左右法则:先确定变量,接着按着先右后左的顺序看 碰到[]为数组 碰到()为函数 变量:什么类型的变量指针:指向什么类型数组:数组里的元素类型函数:形参为.....返回值为....... 保存地址  称为指针变量保存字符  称为字符变量保存整型  称为整型变量 int*(*(*(*fp1)(int))[10]fp1:函数指针变量,指向形参为int,返回

2016-11-22 20:36:10 379

原创 C的优缺点

1.嵌入式开发系统为什么选择c?所有的操作系统内核都是采用c语言实现。 2.操作系统为什么采用c语言开发?① 出色的移植性② 能够访问硬件③ 运行效率高 什么是移植性?评判移植性的标准?1.在不同平台下运行。2.从一个平台切换到另一个平台,修改的越少,移植性越高。 访问硬件汇编(低级语言)也可以访问并且效率更高对硬件初识化的时候用汇编语言;

2016-11-20 16:24:17 1319

原创 vim编辑器操作命令

Vim文本编辑器的修改配置文件(先在root下备份)Vim /etc/vimrc在set ruler后面加set number(显示序号)set cursorline (自动显示编辑那一行)set mouse=a 支持鼠标操作 yy  复制   10yy  复制十行p   粘贴DD  删除   10DD删除十行U   恢复  VIM底行查

2016-11-19 23:16:12 357

原创 进一步了解Makefile

mkdir -p add/src  一层一层创建目录。touch add/Makefile 创建Makefile。include 目录中存放头文件。scripts 存放脚本文件。 存放方式:按照内核管理源码来管理。 为什么学习Makefile? 编译大型项目‚ 读懂别人的开源代码(找到程序入口) 看项目的顺序① 先看scripts下的Makefil

2016-11-18 23:03:36 228

转载 Makefile中的基本函数

Makefile中常用的基本函数1、subst$(subset 参数1, 参数2, 参数3)把参数3中的1替换成参数2    返回被替换的参数32、patsubst$(patsubset 模式参数, 参数1, 参数2)把参数2中复合模式参数的单词替换成参数1   返回被替换后的参数23、wildcard$(wildcard 模式参数)

2016-11-17 22:12:59 931

原创 Linux下红帽实现全屏

红帽实现全屏右击上方系统安装 VM TOOLS进入计算机(若进不去关闭右下方检查更新)进CD拷贝VM到root  然后取消VM TOOLS解压VM进入vm./vm ware-installpl(运行)重启Vim文本编辑器的修改配置文件(先在root下备份)Vim /etc/vimrc在set ruler后面加set number(显示序号)set

2016-11-16 21:58:30 1304

转载 Vim详解

vim 配置文件 ,高亮+自动缩进+行号+折叠+优化 将一下代码copy到 用户目录下 新建文件为  .vimrc保存即可生效; 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份)"=========================================================================" DesCRiption: 适合

2016-11-15 22:09:48 385

原创 初识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 308

转载 编译器的三级优化

GNU编译器提供-O选项供程序优化使用:-O 提供基础级别的优化-O2 提供更加高级的代码优化,会占用更长的编译时间-O3 提供最高级的代码优化不同的优化级别使用的优化技术也可以单独的应用于代码。 可以使用-f命令行选项引用每个单独的优化技术。1, 编译器优化级别1在优化的第一个级别执行基础代码的优化。 这个级别试图执行9种单独的优化功能:-fdefer-pop

2016-11-13 10:10:04 322

转载 谈谈学习方法

上一篇文章公众号上有同学给我留言:张哥,我是一名大二学生,我很喜欢 Android,但是我感觉我的逻辑思维有点慢,学习方法也不得巧,所以,问下您有什么建议吗?还是说我不适合学编程,大学计算机专业!其实不止这位同学,之前很多人给我留言,说因为兴趣,选择了编程,而且自己也很努力,也在持续坚持学习,然而觉得自己没有任何进步,甚至一度怀疑自己不适合编程。还有工作了一两年的同学给我留言,说感觉自己也

2016-11-12 10:39:58 346

原创 初识gcc编译器

C在编译过程分为四个阶段:1.预处理:①:头文件展开 ②:宏替换 ③:条件编译;头文件 cd /usr/include/   gcc -E demo.c>  demo.i[-E(只进行预处理) >(重定向) .i(预处理文件后缀名)]   系统的头文件目录,找不到报错。  “stdio.h” 现在当前目录中找,找不到再去系统头文件目录中找,找不到报错。  用户自己定

2016-11-11 23:08:14 300

转载 CTRL+F的作用

这周,我跟Dan Russell进行了一次交谈,他是Google公司研究搜索的人类学家,目前他的研究对象是随机选取的人群,调查他们的搜索习惯。有一个统计数字引起了我的注意。在他的研究中发现,90%的人不知道使用CTRL + F 在web页面或文件中搜索字词!我每天几乎要使用这个技巧不下20次,然而绝大多数人竟然完全不知道这种用法。“90%的美国互联网用户不知道这种用法,这是抽样调查了数

2016-11-10 10:38:52 3271

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除