摘要: 1、调试相关的宏_FILE_:用来代表当前源代码的文件名(字符串表示)_LINE_:代表当前源代码中行号(正整数表示)_func_:代表当前所在函数的函数名_DATE_:代表编译时进行预处理的日期,格式为“MMM DD YYYY “_TIME_:代表编译源文件的当前时间,格式为“hh:mm:ss”2、<ctype.h><ctype.h>主要提供两类重要的函数:字符测试函数和字符大小转化函数。提供的函数中都以int类型为参数,并返回一个int类型的值。实参类型应该隐式转换或者显示转换为int类型。int isalpha(int ch) 若ch是字母('A' 阅读全文
posted @ 2012-06-02 18:09 always on the way 阅读(555) 评论(0) 推荐(0) 编辑
摘要: 1、可变参数函数,见下面程序及注释#include <stdio.h>#include <stdarg.h>//可变参数函数int max(int n,...){ va_list paras; //宏va_list通常定义为char指针类型,用它来实现记录函数的参数列表,通常它初始会指向起始参数的地址 //char * paras; //不用宏定义实现 int max=0; int temp=0; va_start(paras,n); //宏va_start用来得到第一个可变参数的地址 //paras=(char *)&n + sizeof(n); //不用宏定 阅读全文
posted @ 2012-06-02 17:41 always on the way 阅读(255) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#include <string.h>int hextodec(char *hex,int n){ unsigned dec=0; int i=n-1; //输入数组[0]为高位 if(hex==NULL || n<=0 || n>8) //输入十六进制最长为8字节(不包含'\0'字符) { printf("the parameter is invalid\n"); return -1; } while(i>=0) { if(hex[i]>='0'&& 阅读全文
posted @ 2012-05-31 20:47 always on the way 阅读(1006) 评论(0) 推荐(0) 编辑
摘要: 1、在NS的模拟网络中,分组(Packet)是 对象间交互的基本单元。分组是一系列分组头和一个可选的数据空间组成。分组头的结构在Simulator对象创建时就被初始化了,同时每个分组头相对于分组的起始地址的偏移量也被记录下来。在缺省情况下,大多数NS内建的分组头都是使能的(包括common头、IP头、TCP头、RTP头、trace头等等)。这意味着在缺省的情况下无论某个分组头是否会被使用,它都会被初始化。在通常情况下,分组只含有一系列的分组头,而指向数据空间的指针为null。用户可以为新的协议定义自己的分组头,也可以通过增加域的方式扩展现有的分组头,添加新分组头的方法,概括来说就是在C++中定 阅读全文
posted @ 2012-05-30 20:09 always on the way 阅读(3104) 评论(0) 推荐(0) 编辑
摘要: 制表符,即\t ,因为有一次想收为己用,但是发现驾驭不了,发现很对不起教C语言的历书,遂百度加以学习。以下是小小感悟\t 它的作用是“跳格”,即到下一个“制表位置”,在系统中一个“制表区”占8列。如若程序是这样的:#include"stdio.h"main(){ printf("123\t456789123456789\n"); printf("123456789123456789\n");}运行结果123 456789123456789 123456789123456789123\t的运行结果是123后面加了6个零,认为123加5个 阅读全文
posted @ 2012-05-23 20:56 always on the way 阅读(17821) 评论(0) 推荐(0) 编辑
摘要: 一、面向过程设计中的static1、 静态全局变量:对于一个完整的程序,在内存中的分布情况如下图: 代码区 //low address 全局数据区 堆区 栈区 //high address一般程序把新产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。静态全局变量有以下特点:(1)该变量在全局数据区分配内存;(2)未经初始化的静态全局变量会被程序自动初始化为0( 在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声... 阅读全文
posted @ 2012-05-21 18:07 always on the way 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 在C的学习过程中,现在才发现,以前有那么多被忽略的重点;现在是慢慢拾起这些重点的时候,通过百度和博客,我感觉我学到了很多东西,自己只是在别人说的基础上,按照自己学习的过程在这里记录一下,以后有时间回过头反复看,才不会忘记。加油!1、typedef 声明,简称 typedef,为现有类型创建一个新的名字,或称为类型别名,在结构体定义,还有一些数组等地方都大量的用到。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。2、typedef与结构结合使用 typedef struct tagMyStruct { int iN... 阅读全文
posted @ 2012-05-17 22:25 always on the way 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况, 但是最常见的是如果不按照适合其平台的要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为 32位)如果存放 阅读全文
posted @ 2012-05-16 20:59 always on the way 阅读(277) 评论(0) 推荐(1) 编辑
摘要: 如果这篇文章没有分享给你,那是我的错。 如果这篇文章分享给你了,你却没有读,继续走弯路的你不要怪我。 如果你看了这篇文章,只读了一半你就说没时间了,说明你已经是个“茫”人了。 如果你看完了,你觉得这篇文章只是讲讲大道理,说明你的人生阅历还不够,需要你把这篇文章珍藏,走出去碰几年壁,头破血流后再回来,再读,你就会感叹自己的年少无知。 如果你看完了,觉得很有道理,然后束之高阁,继续走进拥挤的地铁,依然用着自己昨日的观念来思考自己的未来,你的人生也将继续重复着昨日的状况。 如果你看完了,觉得那是一个过来人,对你的人生忠告,并你也愿意用他告诉你的思想去指导自己今后的生活,对你来讲成功不是很难,难的是你 阅读全文
posted @ 2012-05-15 20:17 always on the way 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 最近几天想用gcc编译c程序,想注释,就想在ubuntu上安装中文输入法,本来更新是可以自动安装的,但更新包太大了,摸索了两天,最后才发现很简单:1、 进入system->system management->language support,打开add or remove language,点击Chinese(汉语),然后apply change即可下载语言包。2、 回到语言和文本界面,把汉语中国拉到顶部,重新启动系统,即可出现中文输入法,ctrl+space,转换输入法。附上我的NS2.35安装经验(已经安装过多次):首先需要安装的是依赖关系:$ sudo apt-get in 阅读全文
posted @ 2012-05-08 22:09 always on the way 阅读(1165) 评论(0) 推荐(0) 编辑