征服C指针

1.局部变量通常在它所在的语句块结束的时候被释放。如果你不想释放某
个局部变量,可以在局部变量上加上 static 进行声明

2.C 中有三种内存领域的寿命。
q 静态变量的寿命从程序运行时开始,到程序关闭时结束。
q 自动变量的寿命到声明该变量的语句块执行结束为止。
q 通过 malloc() 分配的领域的寿命到调用 free() 为止。

3.静态变量是从程序启动到运行结束为止持续存在的变量。因此,静态变
量总是在虚拟地址空间上占有固定的区域

4.所谓的“返回地址”,是指函数处理完毕后应该返回的地
址。

5.标准库中有一个 gets() 函数,它和 fgets() 同样都可以从标准输入读
取一行输入,但与 fgets() 不同的是你不能向它传递缓冲的大小

6.经常将“0x12345678”这样的值以“12,
34, 56, 78”的顺序存放,这种配置方式称为大端( big-endian)字节序。

7.5. Void func(int hoge[3][2])  和 void func(int hoge[][2]); 与 void func(int (*hoge[2]))声明一样

8.6. Char str[256] 输出用 printf(str); 在 stdio.h 的原型中,printf()的第一参数被定义为“指向char指针”

9.7.const  将类型修饰为“只读”  如何使用const   a) 指用于输入的函数  b)指用于输出的函数  c)指用于输入输出的函数

10.Typedef  用于给某类型定义别名

11.只有在声明函数形参的情况下,Int a[] 和Int *a 才具有相同的意义

12.异常处理中使用goto , 反而可以让程序更加整洁

时间: 2024-08-23 17:47:35

征服C指针的相关文章

征服C指针-C的变量种类

C语言的变量具有区间性的作用域.在开发一些小程序的时候也许我们并不在意作用域的必要性.可是,当你书写几万行,甚至几十万行的代码的时候,没有作用域肯定是不能忍受的.C语言有如下三种作用域. 1. 全局变量 在函数之外声明的变量,默认地会成为全局变量.全局变量在任何地方都是可见的.当程序被分割为多个源代码文件进行编译时,声明为全局变量的变量也是可以通过关键字extern从其他源代码文件中引用的. 2. 文件内部的静态变量 就算对于像全局变量那样呗定义在函数外面的变量,一旦添加了static,作用域就

《征服 C 指针》摘录6:解读 C 的声明

一.混乱的声明——如何自然地理解 C 的声明? 通常,C 的声明 int hoge; 这样,使用“类型 变量名;”的形式进行书写. 可是,像“指向 int 的指针”类型的变量,却要像下面这样进行声明: int *hoge_p; 似乎这里声明了一个名为 *hoge_p 的变量,而实际上,这里声明的变量是 hoge_p,hoge_p 的类型是“指向 int 的指针”. 因为这种声明方式不太好理解,所以有人提出将 * 靠近类型这一侧进行书写,如下: int* hoge_p; 的确,这种书写方式符号“类

读书笔记《征服C指针》----C的声明是这样解读的

解读C的声明的最好方法是用英语来阅读,道理很简单,因为C语言是美国人发明的. 为了把问题变得更简单,在这里暂不考虑const和volatile.接下来遵循以下步骤来解释C的声明. 首先着眼于标识符(变量名或者函数名). 从距离标识符最近的地方开始,依照优先顺序解释派生类型(指针.数组.和函数).优先顺序说明如下: 用于整理声明内容的括弧. 用于表示数组的[],用于表示函数的(). 用于表示指针的*. 解释完成完成派生类型,使用“of”.“to”.“returning”将它们连接起来. 最后,追加

《征服 C 指针》笔记6:练习——挑战那些复杂的声明

应该是小试牛刀的时候了. 在 ANSI C 的标准库中,有一个 atexit()函数.如果使用这个函数,当程序正常结束的时候,可以回调一个指定的函数. atexit()的原型定义如下: int atexit(void (*func)(void)); 1.首先着眼于标识符. int atexit(void (*func)(void)); 英语的表达为: atexit is 2.解释用于函数的(). int atexit(void (*func)(void)); 英语的表达为: atexit is

《征服 C 指针》摘录4:函数 与 指针

一.指向函数的指针 函数名可以在表达式中被解读成“指向函数的指针”,因此,正如代码清单 2-2 的实验那样,写成 func 就可以取得指向函数的指针. “指向函数的指针”本质上也是指针(地址),所以可以将它赋给指针型变量. 比如有下面的函数原型: int func(double d); 保存指向此函数的指针的变量的声明如下: int (*func_p)(double); 然后写成下面这样,就可以通过 func_p 调用 func, int (*func_p)(double); // 声明 fun

《征服 C 指针》摘录5:函数形参 和 空的下标运算符[]

一.函数的形参的声明 C 语言可以像下面这样声明函数的形参: void func(int a[]) {     // ... } 对于这种写法,无论怎么看都好像要向函数的参数传递数组. 可是,在 C 中是不能够将数组作为函数的参数进行传递的.无论如何,在这种情况下,你只能传递指向数组初始元素的指针. 在声明函数形参时,作为类型分类的数组,可以被解读成指针. void func(int a[]) { } 可以被自动地解读为 void func(int *a) { } 此时,就算你定义了数组的元素的

《征服 C 指针》摘录3:数组 与 指针

一.数组 和 指针 的微妙关系 数组 是指将固定个数.相同类型的变量排列起来的对象. 正如之前说明的那样,给指针加 N,指针前进“当前指针指向的变量类型的长度 X N”. 因此,给指向数组的某个元素的指针加 N 后,指针会指向 N 个之后的元素. #include <stdio.h> int main(void) { int array[5]; int *p; int i; /* 给数组 array 的各元素设定值 */ for (i = 0; i < 5; i++) { array[i

《征服 C 指针》摘录2:C变量的 作用域 和 生命周期(存储期)

在开发一些小程序的时候,也许我们并不在意作用域的必要性.可是,当你书写几万行,甚至几十万行的代码的时候,没有作用域肯定是不能忍受的. C 语言有如下 3 种作用域. 1.全局变量 在函数之外声明的变量,默认地会成为全局变量.全局变量在任何地方都是可见的.当程序被分割为多个源代码文件进行编译时,声明为全局变量的变量也是可以从其他源代码文件中引用的. 2.文件内部的静态变量 就算对于像全局变量那样被定义在函数外面的变量,一旦添加了 static,作用域就只限定在当前所在的源代码文件中.通过 stat

指针和数组解析

指针和数组 指针和数组是一样的吗? 经常可以看到“数组就是指针”.“数组名就是常量指针”这些说法,但真的是这样吗?让我们先看一下指针和数组的定义. 1. 指针 根据C99标准,指针的定义如下: A pointer type may be derived from a function type or an object type, called the referenced type. A pointer type describes an object whose value provides