指针3
五大内存分区
堆、栈、自由储存区、全局\静态储存区、常量储存区;
注意
char *q ="i love you ";中q中的变量是存放在常量储存区,只能读,是不能改变的;
字符指针变量和字符数组的不同
1.字符数组由若干个元素组成,每个元素中 放一个字符,而字符指针变量中存放的是地址 (字符串第1个字符的地址),决不是将字符 串放到字符指针变量中。
2.赋值方式 对字符数组只能对各个元素赋值不能用以下办法对字符数组赋值。
char str[20];
str= "I love Fishc. com !
而对字符指针变量,可以采用下面方法赋值: char *a; a="I love !”; 但注意赋给a的不是字符,而是字符串第一个元素的地址。
3.如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个字符变量的地址也就是说,该指针变量可以指向一个字符型数据,但如果未对它赋予一个地址值,则它并未具体指向一个确定的字符数据。
指向函数的指针
定义
int (*q)()\\括号里面放参数;q指向函数的首地址即函数名;
作用
1.通过指针函数,可以在一个子函数里面调用多个函数
eg:
void sub( int (*x1)(int), int (*x2)(int,int))
int a,b, i,j;
a=(*x1)(i);//调用x1函数//
b=(*x2)(i,j);//调用x2函数//
eg:
设一个函数process ,在调用它的时候,每次 实现不同的功能。(有 点类似多态) 输入a和b两个数,第一次调用process时找 出a和b中大者,第二次找出其中小者,第三 次求a与b之和。

浙公网安备 33010602011771号