摘要: 1,结构体以及两种用法#include struct s { int a; int b; char s[6]; }; //结构体声明int main(void) { struct s obj={ .a=5, .b=8, .s="hello", }; //结构体初始化 printf("sizeof obj=%u\n",sizeof obj); //结果为16是两个int型占8个字节,最后一个数组要凑齐被4整除的边界只能是8,所以有16个字节。 printf("&obj = %p,&obj.a=%... 阅读全文
posted @ 2013-10-07 10:50 泛起的鱼 阅读(1531) 评论(0) 推荐(0) 编辑
摘要: tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出下面的参数-f是必须的-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。# tar -cf all.tar *.jpg这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。# t 阅读全文
posted @ 2013-10-07 09:23 泛起的鱼 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 1,malloc动态内存存储#include #include #include //动态存储 int main(void) { int *p=NULL; int *tmp=NULL; int n; int ret; int count=0; while(1) { retry: printf("input num:"); ret=scanf("%d",&n); while(getchar()!='\n');//清空输入输出缓存区里面的东西 if(ret==0) ... 阅读全文
posted @ 2013-10-06 09:46 泛起的鱼 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 1,malloc返回的void *类型指针不可做更改#include #include int main(void) { int *p=malloc(20); p++; //p已经变化过,因此是 无效的释放 free(p); return 0; }结果:报错*** Error in `./a.out': free(): invalid pointer: 0x0156000c *** Aborted (core dumped) 2,free双重释放#include #include //双重释放,p的值不变,... 阅读全文
posted @ 2013-09-05 17:19 泛起的鱼 阅读(1704) 评论(0) 推荐(0) 编辑
摘要: 1,使用6级指针访问一个整数,使用隐式内存分配中转#include #include //构建六级指针访问一个整数 //使用隐式内存分配中转 //这个程序只是做人工分配内存的目的 int main(void) { int ******p=NULL; int a=16; p=malloc(sizeof(int *****));//同下 *p=malloc(sizeof(int ****));//同下 **p=malloc(sizeof(int ***));//同下 ***p=malloc(size... 阅读全文
posted @ 2013-09-05 16:01 泛起的鱼 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 1,二级指针定义#include { //int** p; //p2是二级指针,是一个变量, //p2本身是int **类型 //p2 指向 int * 类型 int **p2=NULL; int *p1=NUL; int a=8; p1=&a; p2=&p1;// p2 --------》*p2 ----------》 **p2// int** int * int printf(“a=%d, **p2=%d\n”,a,**p2); ... 阅读全文
posted @ 2013-09-05 14:27 泛起的鱼 阅读(1021) 评论(0) 推荐(0) 编辑
摘要: 堆和栈的区别一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后由系统释放。4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放5、程序代码区— 阅读全文
posted @ 2013-09-05 11:28 泛起的鱼 阅读(7330) 评论(0) 推荐(1) 编辑
摘要: C++/ANSI C:void*指针只支持几种有限的操作:与另一个指针进行比较;向函数传递void指针或从函数返回void*指针;给另一个void*指针赋值。不允许使用void*指针操作它所指向的对象,例如,不允许对void*指针进行解引用。不允许对void*指针进行算术操作。GNU C:GNU C指定void*指针的算术操作与char*一致。void*表示“任意类型的指针”,主要运用于内存操作函数的形参类型和返回值类型(内存操作与内存中数据类型无关,即任意类型都可以)。memcpy 原型:extern void *memcpy(void *dest, void *src, unsigned. 阅读全文
posted @ 2013-09-05 10:24 泛起的鱼 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 1,指针的基本用法1#include // 指针和数组都是复合类型, 他们从基本类型// 或者自定义类型派生.int main(void){ // 当定义指针变量p 时, int * --> 这里的 * // 不是运算符, 而是 类型定义说明符. // 定义了一个变量p // p 是 int * 类型. p 指向 int 类型. int *p = NULL; int a = 8; // 此时, p 指向 a p = &a; printf("sizeof p = %u\n", sizeof(p)); printf("&p = %p, ... 阅读全文
posted @ 2013-09-04 17:09 泛起的鱼 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 1,格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。2,这里的"c=%#x\n"意思是:是一个格式控制符,其中c=是普通字符,%#x是格式说明,\n是转义字符;其中的%#表示的输出提示方式,如果是8进制,在前面加0,如果是十进制,不加任何字符,如果是十六进制,会加上0x当执行:printf("c=%#o\n",c);输出的是:0101(把16进制41转化为2进制) 阅读全文
posted @ 2013-09-04 16:55 泛起的鱼 阅读(3504) 评论(0) 推荐(0) 编辑