
C
文章平均质量分 81
qicheng777
这个作者很懒,什么都没留下…
展开
-
gets,fgets,getchar,puthar,stdin,stdout总结
一、gets()函数: char *gets(char *s); 从键盘中读入字符串到s中,但是有个缺点,就是不会考虑到溢出问题。例子:#include <stdio.h> int main(int argc,char **argv) { char str[5]; gets(str); printf("%s",str); return 0;} 使用g原创 2017-05-26 22:40:59 · 1304 阅读 · 0 评论 -
C语言经典编程题
一、递归求一个数的阶乘:int factorial(int n){ while (n > 1) { return n*func(n-1); }}当然也可以不用while循环,因为都是n级运算,算法复杂度都为O(n),所以影响不大。int factorial(int n){ if(n == 0) { return 1;原创 2017-08-11 20:21:53 · 50885 阅读 · 6 评论 -
C语言编译、链接过程
这些天遇到关于编译与链接的问题,所以根据网上资料写下了对这个过程进行简单梳理!一、编译过程: 预处理 -->编译-->汇编1、预处理: 完成对源程序的“替代”工作,主要对头文件宏定义,特殊字符处理2、编译: 对语法进行差错,分析是否符合规则,然后翻译成汇编代码。3、汇编: 把 汇编代码--->目标机器代码 的过程。目标代码通常有两个段组成:代码段:该段中包含主要的程原创 2017-09-08 15:08:43 · 1342 阅读 · 0 评论 -
结构体对齐(图解)与位域
一、结构体对齐 在计算结构体大时往往需要考虑到结构体对齐,简单的总结下我的一些经验。 结构体对齐时,先找出本结构中最大类型的长度,先考虑自身对齐,然后在与最大类型对齐,最后考虑整个结构对齐(与最大类型长度对齐),下面用图解法进行分析:例:(64位系统,模数最大为8,所以结构体最大对齐值为8 ; 32位系统为模数为4,结构体对齐值为4)#include <stdio.h>struct A{原创 2017-09-04 14:36:11 · 6844 阅读 · 3 评论 -
排序算法——桶排序、冒泡排序、快速排序、选择排序
一、桶排序:最快最简单的算法,但是因为要借助辅助内存(数组),所以占用空间,如果要对很多数据排序就不太合适。 一个旗子表示该数出现过一次。#include <stdio.h>int main(){ int book[1001],i,j,t,n; for(i=0;i<=1000;i++) { book[i]=0; } scanf("%d"原创 2017-07-27 20:33:17 · 1704 阅读 · 0 评论 -
常见字符串函数的实现过程
一、strlen()函数求字符串长度,不包括 ‘\0’unsigned int mystrlen( char *s ){ unsigned int len=0; while(*s != '\0') { s++; len++; } return len;}二、字符串追加函数strcat( ):char *mystrcat(ch原创 2017-07-30 20:55:56 · 520 阅读 · 0 评论 -
C语言内存四大区域几点总结
未初始化全局变量默认值为0,未初始化局部变量一般默认值为随机数,但有的编译器也为0。一、栈: 栈遵循后进先出,栈的大小由编译器决定。一般来说,默认栈的大小为1M,所以如果变量分配内存过大可能会造成栈溢出。比如: 定义一个数组长度为200M,double a[1024*1024*200]如果编译器栈大小不够的话会造成溢出。栈不同于堆,栈用完立即回收,所有局部变量都存放在栈中。 如下程序会一直进原创 2017-07-26 19:58:02 · 1176 阅读 · 1 评论 -
递归与栈
登斯楼也,则有去国怀乡,忧谗畏讥,满目萧然,感极而悲者也。 ——《岳阳楼记》一、递归: 简单来说,递归就是自己调用自己,然后一层一层的返回。 所有for循环都可以用递归来做。废话不多说,直接上例题:1、实例1: 50个台阶,一次只能走一步或者两步,问有多少方法到达第10个台阶? 解决这个方法,我们首先要找到数学规律: f(1原创 2017-07-25 10:30:13 · 3315 阅读 · 0 评论 -
C语言编程实战——编写简单贪吃蛇程序
心之何如,有似万丈迷津,遥亘千里,其中并无舟子可渡人,除了自渡,他人爱莫能助。 —-三毛 编程环境:VC++一、相关结构体以及函数:1、Windows下坐标结构体COORD: COORD是Windows API中定义的一种结构,表示一个字符在控制原创 2017-07-24 15:05:28 · 4458 阅读 · 1 评论 -
C语言读写二进制文件
可以这么说,除了文本文件以外的所有文件都是二进制文件。二进制文件相对于文本文件更容易修改。因为文本文件的修改,需要修改以后写入内存,然后再清空原文件,再从内存中读取出修改以后的内容到本文件中。二进制文件修改只需要找到特定的字符,然后对它进行修改。对二进制文件进行操作主要用到fopen,fread,fwrite,fseek等函数。完整代码:#include #include原创 2017-07-20 14:35:04 · 22061 阅读 · 0 评论 -
内存泄漏、越界、溢出
一、内存泄漏:常见内存泄漏情况:1、while循环中,不断用malloc( )分配内存并且没有free( )。 2、线程中存在malloc()没有调用free(),而线程一直开启。3、文件描述符没有close()4、数据库的读表操作,读取了表但是没有释放数据表指针指向的空间。二、越界与溢出:溢出:超过类型值 越界:下标short int a;a=32767;a++;//溢出char原创 2017-09-21 18:36:42 · 1426 阅读 · 0 评论