c语言学习总结
文章平均质量分 68
fml1997
这个作者很懒,什么都没留下…
展开
-
fl2440蜂鸣器测试程序和strcmp()及struct input_event 还有perror()浅析
前面移植了内核自带的蜂鸣器驱动,现在有时间写一个最简单的测试程序,功能是打开蜂鸣器,或者关闭蜂鸣器。 1 /********************************************************************************* 2 * Copyright: (C) 2017 fanmaolin 3 *原创 2017-04-29 19:46:15 · 441 阅读 · 0 评论 -
单向链表的逆序,不使用额外节点存储实现
链表的逆序是常见考题,今天来简单学习使用如何实现单向链表的逆序。逆序过程初始链表状态 初始状态,prev是NULL,head指向当前的头节点A,next指向A节点的下一个节点B。首先从A节点开始逆序,将A节点的next指针指向prev,因为prev的当前值是NULL,所以A节点就从链表中脱离出来了,然后移动head和next指针,使它们分别指向B节点和B的下一个节点C(因为当前的next已经指向B原创 2017-08-12 10:00:20 · 694 阅读 · 0 评论 -
C程序内存布局学习总结
C程序的编译过程由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-链接三个阶段。编译过程把c语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,链接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。C语言编写的程序经过编译-连接后,将形成一个统一格式的二进制可执行文件,这个格式是一个依照可执行文件格式的,可以被系统识别,并且加载到内存中执行的,它由几个部分原创 2017-08-06 17:16:58 · 420 阅读 · 0 评论 -
排序算法学习:冒泡、选择、快速
排序的相关概念排序:将一组杂乱无章的数据按一定的规律顺次排列起来。数据表( data list): 它是待排序数据对象的有限集合。排序码(key):通常数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据。该域即为排序码。每个数据表用哪个属性域作为排序码,要视具体的应用需要而定。分类 内排序:指在排序期间数据对象全部存放在内存的排序; 外排序:指在排序期间全部原创 2017-08-13 20:22:36 · 376 阅读 · 0 评论 -
排序算法学习:快速的桶排序
排序原理 假设现在要对5 3 5 2 8这几个数进行排序。我们申请一个大小为9的数组(待排序数中最大数+1),假设为9个木桶,把9个木桶置为0,如图: 然后在对应桶的编号(这就是为什么要设置为待排序数组中最大数+1了)中标记1,如图在a[5]中标记为1,表示待排数组中有5,并且5在a[5]这个位置。 继续向后标记如果遇到重复的数字,比如两个5,就在该位置a[5]置为2,表示有两个5 把所有要原创 2017-08-14 17:18:24 · 355 阅读 · 0 评论 -
结构体对齐详解
阅读说明1、在文中要注意#pragma pack()函数的使用2、本文中博主用于演示的是linux32位系统3、如果有不同意见可以在下面评论区一起讨论(windows下的我不是很清楚,听说例二windows下的那个分析有问题,1B+8B=13B,阅读分析时请注意)4、我觉得这篇文章解释的非常清楚,看完之后醍醐灌顶5、标注为“注”的是我的注释我认为结构体对齐要考虑三点:1、确认结构体对齐值(模数),通原创 2017-09-04 16:43:39 · 1178 阅读 · 0 评论 -
通过获取IP地址熟悉popen、str*系列、snprintf()、fgets
在很多时候我们需要获取自己的ip地址,用一段简单的代码来做简直是美妙极了,还能学习新知识。原创 2017-05-24 21:28:18 · 557 阅读 · 0 评论 -
c语言中基本数据类型printf()对应格式
printf() printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为: printf(“<格式化字符串>”, <参量表>);其中格式化字符串包括两部分内容:一部分是正常字符, 这些字符将按原样输出;另一部分是格式化规定字符, 以”%”开始, 后跟一个或几个规定字符, 用来确定输出内容格式。 参量表是需要输出的一系列参数, 其个数必转载 2017-08-07 16:35:28 · 7905 阅读 · 0 评论 -
C编程注意32位机器和64位机器的差别及unsigned和signed
1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存 2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。C/C++ 32位机器和64位机器 差异问题总结 跨平台 移植问题 语言编程需要注意的64位和32机器的区别#include < stddef.h>OS versi转载 2017-09-01 11:21:30 · 7737 阅读 · 0 评论 -
单向链表的节点插入与删除
理解了链表的创建后,其他链表操作也变得比较简单,对上次的代码做了些修改,今天来记录一下自己对链表节点的插入与删除操作的学习。在某个节点后插入节点struct node *insert(struct node *head, int datanum, struct node *new){ struct node *p1; if(head == NULL)//是空链表时 {原创 2017-08-10 20:33:40 · 1251 阅读 · 0 评论 -
用C代码写贪吃蛇游戏--打印食物
贪吃蛇游戏创建食物:1、食物的产生要求是随机的 2、蛇吃掉食物后会长大 3、蛇吃掉食物后会再次产生食物因为食物的产生是随机的,要求用C产生随机数:产生1-6的10个随机数int main(void){ int i = 0; for(i=0;i<10;i++) { printf("%d ",rand()%6+1); } printf("\n原创 2017-08-02 15:49:01 · 3000 阅读 · 0 评论 -
用C代码写贪吃蛇游戏--用按键控制蛇移动
通过按键控制蛇的移动,首先需要读取按键,通过按键来控制。通过百度后得知用kbhit();用一小段代码进行测试:一直输出Hello World,直到用户按Esc结束#include "stdafx.h"#include<stdio.h>#include<conio.h>#include<stdlib.h>int main(void){ char ch; while(ch!=2原创 2017-08-02 15:03:32 · 11817 阅读 · 3 评论 -
linux环境高级编程之fork、getpid、getppid函数
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。原创 2017-05-22 17:17:44 · 1425 阅读 · 0 评论 -
写程序熟悉read()、write()、stat()、open()、access()等函数
这些函数在学习APUE(Unix环境高级编程)文件I/O时碰到,在这里做一个总结。首先熟悉系统调用和库函数系统调用是操作系统为用户态运行的进程与硬件设备(如CPU、 磁盘、 打印机等)进行交互提供的一组接口函数;库函数: 顾名思义是把函数放到库里。 是把一些常用到的函数编完放到一个库文件里,供别人用, 别人用的时候把它所在的文件名用#incl原创 2017-04-25 18:27:45 · 1343 阅读 · 0 评论 -
常见字符串函数的学习总结
str系列,mem系列,常见字符串函数原创 2017-08-07 16:15:18 · 319 阅读 · 0 评论 -
单向链表的创建和遍历
单向链表简介单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始; 链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针成员变量指向列表中的下一个结点; 链表是由结点构成,head指针指向第一个成为表头结点,而终止于最后一个指向nuLL的指针。创建单向链表一个简单的单向链表创建过程说明: 图中的p为原创 2017-08-08 15:40:56 · 490 阅读 · 0 评论 -
二叉树的操作:创建、遍历、求树的深度、叶子结点数
二叉树认识二叉树在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。在该图中,用’#’表示空节点,我们真正要创建的树为有ABCD字符。先序遍历的方式创建二叉树int creatBitree(struct Bitnode *(*T)){ char data; // data = getc原创 2017-08-16 12:39:14 · 3804 阅读 · 1 评论 -
用C代码写贪吃蛇游戏--创建一条蛇并移动
***********************************************开发工具:VC6.0中文版**********************************************前段时间实习做了贪吃蛇游戏,现在抽空进行总结和整理,重点是整理思路,如何让一个想法变成代码。1、创建一条蛇2、让这条蛇移动3、按键控制蛇的移动4、创建食原创 2017-08-02 13:12:09 · 8930 阅读 · 0 评论 -
创建N个单向链表对它进行摧毁和清空操作
摧毁和清空的含义及区别摧毁是先销毁了链表的头,然后接着一个一个的把后面的销毁了,这样这个链表就不能再使用了,即把包括头的所有节点全部释放。清空是先保留了链表的头,然后把头后面的所有的都销毁,最后把头里指向下一个的指针设为空,这样就相当与清空了,但这个链表还在,还可以继续使用;即保留了头,后面的全部释放。区别:清空是链表的头还在,可以继续插入节点;销毁就是链表没了,整个链表(包括头)的空间都被释放了,原创 2017-08-09 15:43:05 · 676 阅读 · 0 评论 -
关于configure和Makefile
转自:http://blog.csdn.net/lltaoyy/article/details/7615833Linux下Makefile的automake生成全攻略 作为linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。转载 2017-09-02 13:08:55 · 1165 阅读 · 0 评论