C语言
GeorgeWan
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言 冒泡排序 快速排序 直接插入排序 选择排序
#include /* 简单选择排序 */void select_sort(int *p, int len){ int i, j; int min, tmp; for(i=0; i<len; i++) { min = i; for(j=i+1; j<len; j++) { if(p[min]>p[j]) { min = j; } } i原创 2014-09-01 22:33:31 · 1531 阅读 · 0 评论 -
struct miscdevice,misc_register(),misc_deregister()
在Linux系统中,存在一类字符设备,他们共享一个主设备号(10),但此设备号不同,我们称这类设备为混杂设备(miscdeivce),查看/proc/device中可以看到一个名为misc的主设备号为10.所有的混杂设备形成一个链表,对设备访问时内核根据次设备号找到对应的miscdevice设备。相对于普通字符设备驱动,它不需要自己去生成设备文件。Linux内核使用struct mis转载 2015-03-03 09:41:12 · 1117 阅读 · 0 评论 -
copy_to_user和copy_from_user
在内核的学习中会遇到很多挺有意思的函数,而且能沿着一个函数扯出来很多个相关的函数。copy_to_user和copy_from_user就是在进行驱动相关程序设计的时候,要经常遇到的两个函数。由于内核空间与用户空间的内存不能直接互访,因此借助函数copy_to_user()完成用户空间到内核空间的复制,函数copy_from_user()完成内核空间到用户空间的复制。下面我们来仔细的理一下这两个函转载 2015-03-03 08:41:05 · 757 阅读 · 0 评论 -
readb(), readw(), readl(),writeb(), writew(), writel() 宏函数
readb(), readw(), readl()函数功能:从内存映射的 I/O 空间读取数据。readb 从 I/O 读取 8 位数据 ( 1 字节 );readw 从 I/O 读取 16 位数据 ( 2 字节 );readl 从 I/O 读取 32 位数据 ( 4 字节 )。原型:#include unsigned char readb (un转载 2015-03-02 10:37:43 · 839 阅读 · 0 评论 -
((x & (1<<n)) >> n) 求某个整数中二进制位的某位的值
((x & (1<<n)) >> n) 求某个整数中二进制位的某位的值LIN specifications 标识符奇偶校验函数原创 2014-12-17 16:14:34 · 885 阅读 · 0 评论 -
UART通信程序-中断方式
UART通信程序-中断方式原创 2014-09-02 16:33:09 · 3097 阅读 · 0 评论 -
一个数值转化为二进制 位运算和位域
在嵌入式系统和单片机开发中,数值转化为二进制是非常常用的,对与位域可能很多上层开发人员都不曾见到,位域在MCU开发中常用的使用的,例如一个开关量和高低电平信号,只用0和1两种状态。下面是我做项目时候写的代码拿出来和大家分享原创 2014-08-18 13:06:25 · 1283 阅读 · 0 评论 -
链表的逆序
创建一个带头节点的链表并把链表的逆序(递归法),链表遍历#include <stdio.h>#include <stdlib.h>/* define structure of linklist */typedef struct Node{ int data; struct Node *next;}Link,LinkList;/*********************************************************** Function : cre原创 2014-08-26 08:36:00 · 682 阅读 · 0 评论 -
宏定义、const变量、枚举的区别
1.宏定义是在预处理阶段进行展开;cnost变量是在编译运行阶段使用2.宏定义没有类型,不做任何类型检查,仅仅是进行展开;const修饰的变量具有具体的类型,编译阶段执行检查3.宏定义在文件中有多少次就展开多少次,不会分配内存空间;const修饰的变量会在内存中分配空间1.枚举属于常量;但宏定义不是常量2.枚举常量是实体的一种;但宏定义不是实体3.枚举具有类型,但宏定义没有类型,枚举与普通变量有作用域和值,但宏定义没有,它是一种预处理替换原创 2014-09-20 10:45:42 · 2824 阅读 · 0 评论 -
找数组中的第二大数
C语言找数组中的第二大数int findSecondMax(int *a, int len){ int i, max, s_max; max = a[0]; /* max */ s_max = a[1]; /* second max */ for(i=0; i<len; i++) { if(a[i]>max) { s_max = max; /* find s_max */ max = a[i]; /* updata max number */原创 2014-08-25 11:55:39 · 776 阅读 · 0 评论 -
计算机中负数表示法
问一个基本的问题。负数在计算机中如何表示?举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢?很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。比如,在8位机中,规定每个字节的最高位为符号位。那么,+8就是00001000,而-8则是10001000。但是,随便找一本《计算机原理》,都会告诉你,实际上,计算机内部采用2的补码(Two'sComplement)表示负数。什么是2的补码?它是一种数值的转换方法,要分二步完成:第一步原创 2014-09-19 17:52:44 · 1496 阅读 · 0 评论 -
数组和链表的区别?
1.数组必须事先定义好固定的长度,不适合数据动态的增长; 当要增加数据时,可能会超出原先定义的长度的个数,当要减少数据时,会造成内存的浪费2.链表是动态进行内存分配,可以适应动态数据的增减,方便数据的插入、删除, 链表必须根据next指针找到下一个元素 数组要插入、删除数据时,需要移动大量的数据,非常的繁琐原创 2014-09-19 17:46:14 · 944 阅读 · 0 评论 -
C语言文件读写操作,从文件读取数据
C语言文件读写操作,从文件读取数据原创 2014-09-05 09:23:38 · 6175 阅读 · 0 评论 -
C语言文件读写操作,写入数据到文件
很早写的在linux系统下的文件读写操作,写入数据到文件,很时候初学者学习#include int writeInfoToFile(const char *strFile){ int age, i; char name[10]; FILE *fp; fp = fopen(strFile, "w"); // 只读的方式打开文件 if(fp == NULL) {原创 2014-09-04 13:51:23 · 17575 阅读 · 0 评论 -
module_param和module_param_array的使用
1.定义模块参数的方法:module_param(name, type, perm);其中,name:表示参数的名字; type:表示参数的类型; perm:表示参数的访问权限;2. 数组类型模块参数的定义:用逗号间隔的列表提供的值;声明一个数组参数:module_param_array(name, type, num, perm);其中,name:表示数组的名字; type:表示参数的类型; num :表示数组中元素数量; perm原创 2015-03-03 13:22:12 · 3594 阅读 · 0 评论
分享