自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 选择排序Select Sort

经典排序算法 — 选择排序Select Sort原理:选择排序的思想非常直接,我就从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。可以很清楚的发现,选择排序是固定位置,找元素。相比于插入排序的固定元素找位置,是两种思维方式。不过条条大路通罗马,两者的目的是一样的。 注意:先从剩下的元素中找到最小的后再交换值,而不是比较

2015-08-29 20:32:53 651

原创 冒泡排序Bubble Sort

经典排序算法 — 冒泡排序Bubble Sort原理是相邻的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子例子:从小到大排序,原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |第一趟排序(外循环)第一次两两比较6 > 2交换(内循环)交换前状态| 6 |

2015-08-29 19:48:58 614 3

原创 malloc/free函数的简单实现及思考

malloc/free函数的简单实现及思考  用于内存管理的malloc/free这对函数,对于使用C语言的程序员应该很熟悉。前段时间听说有的IT公司以“实现一个简单功能的malloc”作为面试题,正好最近在复习K&R,上面有所介绍,因此花了些时间仔细研究了一下。毕竟把题目做出来是次要的,了解实现思想、提升技术才是主要的。本文主要是对malloc/free实现思路的介绍,蓝色部分文字是在个人思考中觉

2015-08-26 22:06:58 950

原创 C内存操作函数

(1)C语言跟内存分配方式 <1>从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量. <2>在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限. <3>从堆上分配,

2015-08-26 21:50:59 417

原创 二维数组和指针

数组名的本质是代表数组对象的变量名,是一个左值,是一个不能被改变的左值。但是由于在程序中不保存数组的大小,所以通过数组名只能访问数组的左值,不能访问数组的右值。由于这个原因,数组名在作为右值使用的时候被赋予另外一个新的意义——指向数组第一个元素的指针,这就是 array-to-pointer 转换规则。 数组名在程序中作为左值使用的情况屈指可数——在大部分情况下数组名都是作为右值使用的,

2015-08-26 21:47:30 710

原创 数组指针和指针数组

指针数组与数组指针的区别: 指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。 数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。下面到底哪个是数组指针,哪个是指针数组呢: A) int *p1[10]; B) int (*p2)[1

2015-08-26 21:43:01 334

原创 C内存对齐

一、概念      对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。      二、为什么要字节对齐       需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果取它

2015-08-26 21:39:11 935 1

原创 指针和地址的区别

/* 作者:丫丫 功能:测试传递指针和传递地址不一样(以二叉树的建立分析) 结论:传递指针指针所指的不容不会被改变,而传递地址则该地址的内容会被改变 日期:2014年12月3日 */#include <stdio.h>#include <malloc.h>#include <stdlib.h>#define STACK_SIZE 50//定义二叉节点typedef struct

2015-08-26 21:13:14 1919

转载 字符串及其操作函数

字符数组和字符串 &字符数组和字符串的概念 &字符数组的初始化&字符串的输入输出 &综合举例字符数组和字符串的概念 字符数组是元素类型为字符的数组 ,它既具有普通数组的一般性质 ,又具有某些特殊性质。 字符串常量是用双引号包围的字符序列。存储字符串常量时,系统会在字符序列后自动加上 ‘/0’,标志字符串的结束。字符串的长度定义为字符串中的有效字符数,不包括结束标志 ‘/

2015-08-26 21:10:56 466

转载 内存缓冲区fflush(stdin)

内存缓冲区 1. 为什么 fflush(stdin) 是错的? 首先请看以下程序#include <stdio.h>int main( void ){ int i; for (;;) { fputs("Please input an integer: ", stdout); scanf("%d", &i); printf("%d\n"

2015-08-26 20:57:22 646

原创 printf函数参数压栈顺序

printf函数的参数的压栈顺序和求值顺序(VC++6.0编译器) 有以下程序段: 设int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",ptr,(++ptr)); 答案为什么是:8,8 这是一道华为面试题。 这个题考的关键就是printf的运算顺序。这个是比较绕的一个问题,主要考验的是i++ 和++

2015-08-26 20:51:43 1885 1

原创 C语言程序内存结构

一个32位的运行在保护模式下应用程序,无论是Linux 还是Windows 都给它分配一个4GB的平坦的内存空间一个运行着的c程序所占用的内存空间分为: 代码区 初始化数据区 未初始化数据区 堆区 和 栈区 在地址上从高位到地位为(高位) 栈区 堆区 未初始化数据区(即BBS) 数据区 代码区 (低位)栈区存放函数的参数值、局部变量的值 , 由编译器自动分配释放 比如实现函数的

2015-08-26 20:46:17 614

转载 scanf函数详解

函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,…]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。 其调用格式为: scanf(“<格式化字符串>”,<地址表>); scanf()函数返回成功赋值

2015-08-26 18:35:30 744

原创 scanf函数加空白符

scanf加空白符之后的效果:空白符 : 空格(space)、TAB、回车(\r)、换页(\f)、换行(\n)while((c = getchar()) == ’ ’ || (c = getchar()) == ‘\t’ || (c = getchar()) == ‘\n’);//跳过空白符、注意while语句后面是分号while((c = getchar()) == ’ ’ || (c = get

2015-08-25 23:05:29 1371

C局用程控机项目

一个完整的局用程控机系统。各个功能均已实现

2015-09-07

空空如也

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

TA关注的人

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