摘要:
看结构体和共用体部分的时候,遇到了一个新名词“内存对齐”。先引入问题。如下: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吗? 这里便要引入内存对齐的概念。内存为了提高访问效率,规定以结构体中最大的基本单位长度为对齐标准。即实际分配的内存大小... 阅读全文
摘要:
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) && ( 阅读全文
摘要:
条件编译预处理程序提供了条件编译的功能。 可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。 这对于程序的移植和调试是很有用的。 条件编译有三种形式,下面分别介绍: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 阅读全文
摘要:
通过显示结果可以看到:$# 是传给脚本的参数个数$0 是脚本本身的名字$1是传递给该shell脚本的第一个参数$2是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义在Bash shell中经常会见到一些比较特殊的符号,本人现收集与此,以供查阅:位置参数:详见ABS(Advanced Bash Shell)中文翻译版103页第9章第一节内部变量,当然英文版ABS都一样啦$1, $2, $3等等...位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量.此数目可以任意 阅读全文