xiao_hao

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2012年3月13日

摘要: 看结构体和共用体部分的时候,遇到了一个新名词“内存对齐”。先引入问题。如下:1 struct student2 {3 char name[20];4 int age;5 char sex;6 char phone[15];7 };8 struct student p1;复制代码 sizeof(p1)=? 这个很简单得出答案,即20+4+1+15=40Byte。如果将phone[15]改为phone[16],结果是44。难道不是41吗? 这里便要引入内存对齐的概念。内存为了提高访问效率,规定以结构体中最大的基本单位长度为对齐标准。即实际分配的内存大小... 阅读全文
posted @ 2012-03-13 14:40 新人_小豪 阅读(133) 评论(0) 推荐(0) 编辑

2012年3月1日

摘要: C判断一字符串是否是合法的IP地址方法1: 判断各个部分是否合法 int is_valid_ip(const char *ip_str) { unsigned int n1,n2,n3,n4; if(sscanf(ip_str, "%u.%u.%u.%u", &n1, &n2, &n3, &n4) != 4) { return 0; } if( (n1 != 0) && (n1 <= 255) && (n2 <= 255) && (n3 <= 255) && ( 阅读全文
posted @ 2012-03-01 15:39 新人_小豪 阅读(1946) 评论(1) 推荐(0) 编辑

2012年2月21日

摘要: 条件编译预处理程序提供了条件编译的功能。 可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。 这对于程序的移植和调试是很有用的。 条件编译有三种形式,下面分别介绍:1. 第一种形式:#ifdef 标识符程序段1#else程序段2#endif它的功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else可以没有, 即可以写为:#ifdef 标识符程序段 #endif#define NUM okmain(){struct stu{int num;char *name;char sex;float s 阅读全文
posted @ 2012-02-21 11:31 新人_小豪 阅读(362) 评论(0) 推荐(1) 编辑

摘要: 通过显示结果可以看到:$# 是传给脚本的参数个数$0 是脚本本身的名字$1是传递给该shell脚本的第一个参数$2是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义在Bash shell中经常会见到一些比较特殊的符号,本人现收集与此,以供查阅:位置参数:详见ABS(Advanced Bash Shell)中文翻译版103页第9章第一节内部变量,当然英文版ABS都一样啦$1, $2, $3等等...位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量.此数目可以任意 阅读全文
posted @ 2012-02-21 11:07 新人_小豪 阅读(331) 评论(0) 推荐(0) 编辑