分类: C/C++
2010-09-26 16:56:22
今日内容:Makefile
$@ 本条规则的目标。 $< 本条规则中第一个条件。 $^ 全部条件。%匹配同名的关系。makefile 中的函数 wildcard *.c 查找所有.c文件。输出为字符串。patsubst 可以对字符串进行转换。
src = $(wildcard ./*.c) 查找所有.c文件。
obj = $(patsubst ./%.c, ./%.o, $(src)) 将其中的.c 替换为.o
指针要有效的初始化
int m = 6;
int **n;
*n = &m; 这段代码中*n在内存中没有初始化。
对指针标量的有效初始化即:1.有权限对指定的地址操作。2.受系统保护(即地址所指的变量需要是在有效的生命期的)。以释放的栈上的空间和free后的堆空间 为不受系统保护的空间。对指针进行初始化和free以后要p = NULL。
今天内容:指针和const
const修饰的局部变量 存储在堆栈段。三种方法验证1. 打印变量地址,在0xbfffffff以下则是表示在堆栈段。2.用指针去试图改变起值,3.反汇编查看。const修饰的全局变量存储在只读数据段,代码段。
int * const a; //指针a不可以指向其他变量,但a指向的变量可以被修改
const int *a;//同下。
int const *a;//指向一个const型的指针,指针可以指向其他变量,但指向的变量不可修改。
int *p = &a;
int *cosnt*q = &p;
const 结合前边的*号 表示p 的指向是固定的。
关于函数指针、回调函数和可变参数。这块比较熟悉,而且例子也比较简单所以就不过多的说明了看一下源码就懂了。
|