随笔分类 -  《C和指针》读书笔记

《C和指针》 读书笔记 -- 第14章 预处理器
摘要:1.相邻字符串常量被自动链接为一个字符串:"my""name"="myname"2.##把位于两边的符号连接成一个符号: #define ADD_TO_SUM(sum_number,value) \ sum ## sum_number +=value ADD_TO_SUM(5,25);即sum5 +=25;3.#undef name //用于移除一个宏定义4.条件编译#if defined(OS_UNIX) #ifdef OPTION1 unix_version_of_option1(); #endif #ifdef OPTION2 阅读全文

posted @ 2013-11-04 10:01 熊猫酒仙是也 阅读(232) 评论(0) 推荐(0)

《C和指针》 读书笔记 -- 第13章 高级指针话题
摘要:1.函数指针 int (*f)(); int *(*f[])();用途:【1】回调函数e.g./*在一个单链表中查找指定值*/Node *search_list(Node *node,void const *value,int (*compare)(void const *,void const *) ){ while(node != NULL) { if(compare(&node->value,value)==0) break; node=node->link; } return node;}int compare_ints(void const *a,v... 阅读全文

posted @ 2013-11-02 10:45 熊猫酒仙是也 阅读(374) 评论(0) 推荐(0)

《C和指针》 读书笔记 -- 第11章 动态内存分配
摘要:1.C函数库提供了两个函数,malloc和free,分别用于执行动态内存分配和释放,这些函数维护一个可用内存池。 void *malloc(size_t size);//返回指向分配的内存块起始位置的指针。分配的是一块连续内存。分配单位:字节 void free(void *point); 另外 void *calloc(size_t num_elements,size_t element_size);//分配内存并初始化为0 void realloc(void *ptr, size_t new_size);//可以是一块内存区域扩大或者缩小。2.内存泄露(memory leak) ... 阅读全文

posted @ 2013-10-27 20:57 熊猫酒仙是也 阅读(204) 评论(0) 推荐(0)

《C和指针》 读书笔记 -- 第10章 结构和联合
摘要:1.聚合数据类型能够同时存储超过一个的单独数据,c提供了两种类型的聚合数据类型,数组和结构。2.【1】 struct SIMPLE { int a; }; struct SIMPLE x; 【2】 typedef struct { int a; }Simple; Simple x;3.结构的自应用 --->用指针 struct SELF_REF { int a; struct SELF_REF *b; };4.struct SIMPLE x; struct SIMPLE *p;=====>>> x.a p->a5.位段 位段成员... 阅读全文

posted @ 2013-10-25 14:56 熊猫酒仙是也 阅读(180) 评论(0) 推荐(0)

《C和指针》 读书笔记 -- 第9章 字符串、字符和字节
摘要:1.字符串以NUL结尾,但字符串长度不包括NUl字节。2.复制字符串 char *strcpy(char *dst,char const *src);3.连接字符串 char *strcat(char *dst,char const *src);4.字符串比较 int strcmp(char const *s1,char const *s2);5. 长度受限的字符串函数 char *strncpy(char *dst,char const *src,size_t len);//strlen(src)>=len 它的结果将不会以NUl字节结尾,可以buffer[BSIZE-1]=' 阅读全文

posted @ 2013-10-11 16:57 熊猫酒仙是也 阅读(337) 评论(0) 推荐(0)

《C和指针》 读书笔记 -- 第8章 数组
摘要:1.在C中,数组名的值是一个指针常量而不是指针变量,也就是数组第一个元素的地址。2.数组和指针的区别: 声明一个数组时,编译器将根据声明所指定的元素数量为数组保留内存空间,然后再创建数组名,它的值是一个指针常量,指向这段空间的起始地址; 声明一个指针时,编译器只为指针本身保留内存空间,并不为任何值分配内存空间。3.存储于静态内存的数组只初始化一次,也就是在程序开始执行之前,通过把数组声明为static来实现。4.int matrix[3][10]; 说明如下: 【1】 matrix 指向包含10个整型元素的数组的指针 ------>指向数组的指针: int (*p)[10]=mat... 阅读全文

posted @ 2013-10-10 19:58 熊猫酒仙是也 阅读(306) 评论(0) 推荐(1)

《C和指针》 读书笔记 -- 第7章 函数
摘要:1.当程序调用一个无法见到原型的函数时,编译器便认为该函数返回一个整型值。如果这个值实际上是非整型值时,还得执行类型转换,所以函数原型声明有时很重要。2.值的类型并不是值的内在本质,而是取决于它被使用的方式。3.C函数的所有参数都是“传值调用”,即函数获得参数值的一份拷贝; 传递给函数的数组参数在行为上是传址调用,因为数组名的值是一个指针,传递给函数的就是这个指针的一份拷贝。4.C通过运行时的堆栈支持递归函数的实现。(递归函数就是直接或者间接调用自身的函数。) 当函数被调用时,它的变量的空间是创建于运行时的堆栈上的,以前调用的函数的变量仍旧保留在堆栈上,但它们被新的函数的变量所“掩盖”,因此是 阅读全文

posted @ 2013-09-22 22:22 熊猫酒仙是也 阅读(233) 评论(0) 推荐(1)

《C和指针》读书笔记——第五章 操作符和表达式
摘要:1.当/操作符的两个操作数都是整数时,它执行整除运算;其他都是执行浮点数除法。2.逻辑移位:左边移入的位用0填充; 算数移位:左边移入的位用符号位填充;3.位置1 :value |= 1st_size; (*pinstance).st_size; pinstance[1].st_size;8.C不具备显示的布尔类型,使用整数来代替。 阅读全文

posted @ 2013-09-15 14:38 熊猫酒仙是也 阅读(174) 评论(0) 推荐(0)

《C和指针》读书笔记——第三章 数据
摘要:1.typedef:为各种数据类型定义新名字 typedef char *ptr_to_char; ptr_to_char a;//声明a是一个指向字符的指针。2.链接属性:extern;static3.变量存储位置:普通内存、运行时的堆栈、硬件寄存器。 (1)在代码块内部声明的变量的缺省存储类型为自动(auto),存储于堆栈中,当程序执行到声明处才创建,离开代码块时自动销毁; 在代码块之外的都存储于静态内存中。 (2)加上static则变为静态变量,存储于静态内存中,程序执行期间始终存在。 (3)关键字register,声明为寄存器变量。4.static关键字 用于函数定义或者代码... 阅读全文

posted @ 2013-09-12 20:45 熊猫酒仙是也 阅读(223) 评论(0) 推荐(0)

《C和指针》读书笔记——第二章 基本概念
摘要:1.编译过程: source code→Compiler→Object code→Linker←Lib ↓Exe2.经过初始化的静态变量(static)在程序执行前能获得他们的值。3.绝大多数环境使用堆栈来存储局部变量和其他数据。 阅读全文

posted @ 2013-09-11 22:21 熊猫酒仙是也 阅读(163) 评论(0) 推荐(0)

《C和指针》读书笔记——第一章 快速上手
摘要:1.注释代码可以用:#if 0 statements#endif2.参数被声明为const,表明函数将不会修改函数调用者的所传递的这个参数。3.scanf("%d",&columns[num]);//返回存储于参数中的值的个数。4.函数名: strncpy功 能: 串拷贝用 法: char *strncpy(char *destin, char *source, int maxlen);程序例:#include #include int main(void){ char string[10]; char *str1 = "abcdefghi"; 阅读全文

posted @ 2013-09-11 17:33 熊猫酒仙是也 阅读(207) 评论(0) 推荐(0)

导航