![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
知识点总结
王大军9527
这个作者很懒,什么都没留下…
展开
-
C中数组与指针
在这里随便定义一个数组 int arr[5]; arr现在就是数组名, arr 代表的是该数组整块内存,即sizeof(arr) == 20 (假设sizeof(int) == 4), arr 里的内容是该块内存的首地址,即 arr == &arr[0] 。 arr可以看做是一个常量,也就不可以使用 arr++ 之类的运算。 int *p; p = arr; p是一个指向int类型的指针,p = arr,就是把数组的首地址(arr的内容就是数组的首地址原创 2010-07-19 20:10:00 · 19384 阅读 · 10 评论 -
sort
<br />1) Bubble排序,又称冒泡排序<br /> 算法思想正如其名,冒泡,若是按升序进行排序的话,即是"大数下沉":<br /> /* * 数组a, 数组个数: lm * 让数组a里的最大(升序为例)的数下沉到最后一个位置 * "大数下沉"的算法是稳定的算法 */for(j = 0; j < lm - 1; j++){ if(a[j] > a[j + 1]){ tmp = a[j]; a[j] = a[j + 1];原创 2010-11-13 12:53:00 · 683 阅读 · 3 评论 -
单目运算符++ --
<br /> 关于这个知识点的总结很早就想写啦,前缀++、后缀++是在笔试的时候频繁出现的。<br /> 以前对她的理解只是表面上的,从网上搜索到一个总结:<br /> 前缀++,是先加后赋值,<br /> 如 i = 1; <br /> m = ++i;<br /> 最后 m 和 i 的值都是2。<br /> 后缀++,是先赋值后加,<br />原创 2010-10-25 10:06:00 · 7573 阅读 · 1 评论 -
定义网络数据报文--字节对齐
<br /> 在用户层实现ARP协议的时候<br /> <br /> 定义ARP协议的报文:<br /> <br />struct _arp{ unsigned short arp_hrd; //硬件地址类型 unsigned short arp_pro; //协议地址类型,IP unsigned char arp_hlen; //硬件地址长度 unsigned char arp_plen;原创 2010-09-24 09:09:00 · 3975 阅读 · 1 评论 -
本地数据与网络数据--字节序转换的实现
<br /> 在进行网络编程的时候,经常会涉及到字节序的转换问题(关于字节序的概念在这略过)<br /> 在系统中为我们实现了这些转换的函数,如ntohs、htons等。<br /> <br />自己尝试着实现这些函数:<br /> 首先要判断主机使用的是什么字节序,这样我们才知道怎样转换:<br /> <br /> 判断主机字节序函数(大端字节序返回1, 小端字节序返回0):<br />/*File: net.c * */static inline原创 2010-09-24 09:57:00 · 1504 阅读 · 1 评论 -
Bootloader的启动流程(二)
<br />Bootloader的启动流程(二)<br /> <br />上次我们的bootloader启动到了函数Main,回顾一下Main前面bootloader的做哪些操作。<br /> <br />首先从地址0x00开始设置arm中的7种异常向量表,系统复位属于复位异常,所以系统启动从复位异常向量0x00位置执行b Reset;<br />跳转到Reset处执行,关闭watch dog,禁止所有中断,设置系统时钟,等硬件初始化工作,要执行C程序之前要设置栈指针R14(SP),跳转到C程序Main函数原创 2010-09-24 07:58:00 · 606 阅读 · 0 评论 -
Bootloader的启动流程(一)
<br />Bootloader的启动流程(mini2440的vboot为例):<br /> <br /> 系统启动的入口点。<br /> 程序的入口点是在/board/QQ2440/u-boot.lds中指定的,其中ENTRY(_start)说明程序从_start开始运行,而他指向的是cpu/arm920t/start.o文件。<br /> 我们用的是ARM920的cpu架构,在复位后从地址0x00000000取它的第一条指令,所以我们将Flash映射到这个地址上原创 2010-09-18 07:25:00 · 1395 阅读 · 1 评论 -
mini2440的Nor Flash启动与Nand Flash启动
<br />Mini2440的硬件资源:<br /> <br />原创 2010-09-16 08:30:00 · 770 阅读 · 0 评论 -
僵死进程
Linux系统中,如果子进程结束了,它是不是简单地就消失了呢?但是这样它退出返回时的相关信息——譬如它是否正常结束,以及它的退出值也一起丢掉。那它到底以什么形态存在于系统中呢? 在Linux系统中,子进程在结束的时候,Linux会给父进程发送一个SIGCHLD的信号,而父进程对该信号的的处理,决定了已结束的子进程以什么样的形态存在于系统。(父进程先于子进程结束等下我们再做讨论)1、当子进程先于父进程结束: 对SIGCHLD采用默认的处理方式#include #inclu原创 2010-08-16 08:46:00 · 1048 阅读 · 0 评论 -
const 与 define
看到const 与 define 第一印象你或许会想到定义常量,定义常量可以使程序的可读性增强,若在程序中多次用到常量时,修改起来也很方便。 但是知道const 与define 的区别吗,还有他们的作用仅只有定义常量吗? 当然const与define是由区别的,而且区别是很大的。 1)、编译器处理他们的时间不一样。 编译一个程序分为四个阶段: 1、预处理阶段,2、编译阶段,3、汇编阶段,4、链接 const是在编原创 2010-08-05 20:33:00 · 374 阅读 · 0 评论 -
再谈数组与指针
在以前的一遍博文中,有谈到数组与指针,经过了一段时间,我对数组与指针的认识又更深入了一些………(一)、数组与指针什么时候通用,什么时候不通用? 数组与指针在一些地方是通用的,也有一些地方是不能互换的。 数组与指针在通用的时候,数组是退化成指针,我们对数组的操作就可以转化成对指针的操作。 例如对数组里元素的访问就 a[i] 实际上编译会之后会变成 *(a+i), 即使通过指针来访问元素的;数组作为形参传递给函数…… 那数组在哪些情况不会退化指针呢?有三种情况下数组不会原创 2010-07-27 22:18:00 · 491 阅读 · 0 评论 -
排序——快速排序(quick_sort)
<br /> 快速排序(quick_sort)算法:<br /> <br />下面的代码都是按照升序来做的:<br /> <br /> int quick_sort(int a[], int nL, int nR) //a是要排序的数组,nL是指向数组的左端,nR是指向数组的右端<br /> {<br /> int i, j;<br /> int nKey;<br /> <br />原创 2010-07-26 21:39:00 · 627 阅读 · 0 评论 -
关于关闭文件的操作函数fclose()
这两天学习到对文件的操作,对于文件的标准操作流程是: 用fopen()这个函数打开文件,之后通过fopen()返回的指针对文件进行读写操作,操作完成之后调用fcolse()的函数来关闭文件。 但是不知道大家注意到没有,关闭文件函数fclose(),要求传入的只是文件的指针,假设是fp,在函数的内部可能通过传入的这个指针实现了对通过fopen分配的内存进行释放以及把文件缓冲区的内容写入文件,但是并不能在函数内部对fp赋空,这样在释放掉通过fopen()分配的内存后,FILE* 类型的原创 2010-07-22 17:40:00 · 6850 阅读 · 2 评论 -
字符串操作
这两天练习中,做好多个字符串相关的练习,字符串在C程序中应用也是非常多,自己针对这两天不断地与她打交道,对于字符串的操作做一些总结。1、 字符串、字符数组: char str1[5] = {'H', 'e', 'l', 'l', 'o'}; char str2[] = "Hello"; 上面的第一个 str1 只能是字符数组,如果在程序中把它当做字符串处理的话就会出错。 第二个 str2 就是一个字符串。 上面的字符数组的大小 s原创 2010-07-22 16:22:00 · 521 阅读 · 0 评论 -
关于我写的strcpy的延伸出的问题——程序运行时内存的分配
上篇博文上我自己写了一个strcpy,只是简单的解决了标准库函数strcpy由于dest目的字符串大小不足以存储下需要复制的字符串而产生的越界问题, 在我的strcpy中dest的字符串大小是在函数里分配的,分配的大小根据需要复制的字符串大小而定,这样就不会产生越界问题了。 但我只考虑了分配内存给dest字符串,却未考虑释放自己分配给dest的内存。这里也就是在程序中动态的分配内存,需要自己释放分配的内存空间,不然要等到程序结束由系统来回收这些内存。有时程序结束之前我不已经不需要使用这块原创 2010-07-21 08:10:00 · 1146 阅读 · 0 评论 -
C函数的参数传递
C函数的参数传递,在以前的学习中,知道函数参数传递分为值传递与地址传递。对这两种的参数的传递,一直都不是那么很清楚的理解,一直到昨天老师给我看了一个面试题,才真正的明白C函数的参数传递。 void GetMemory(char *p) { p = (char*)malloc(100*sizeof(char)); } int main() { char *str; str = NULL;原创 2010-07-19 08:15:00 · 1146 阅读 · 0 评论 -
视频音频常用编码解码介绍
来源http://blog.csdn.net/luchy/archive/2007/03/27/1542478.aspx 这里只对常见的视频音频编码做一个系统的简单介绍,并不进行详细探讨。由于我的知识有限,难免有错误的地方,欢迎来信指正。MPEG 系列转载 2011-08-11 11:40:36 · 1056 阅读 · 1 评论