Xp 2000 20002001 分配给指针 变量xp的存 储单元 分配给变量k 的存储单元
11 … … 2000 2001 xp 2000 分配给指针 变量xp的存 储单元 分配给变量k 的存储单元
C语言允许定义如下形式的指针变量: void*指针变量名; void型指针变量称之为“无基类型指针变量”, 它可用来存储任何一种数据类型对象的地址。可把 void型指针变量看作为“通用”型指针变量 但是,如果希望把void型指针变量中存储的地址 值赋给另一个具有确定基类型的指针变量时,则应该 用强制类型转换运算符将它先转换成相应的基类型指 针后再赋给那个指针变量。 例如 12
12 C语言允许定义如下形式的指针变量: void *指针变量名; void型指针变量称之为 “无基类型指针变量”, 它可用来存储任何一种数据类型对象的地址。可把 void型指针变量看作为 “通用” 型指针变量 但是,如果希望把void型指针变量中存储的地址 值赋给另一个具有确定基类型的指针变量时, 则应该 用强制类型转换运算符将它先转换成相应的基类型指 针后再赋给那个指针变量。 例如:
main( void*; int a, *ip p=&a; ip=(int*)p;/其中的“”号表示 指针类型不能丢掉 13
13 main ( ) { void *p ; int a , *ip ; p = &a ; ip = ( int* ) p ; …… } /*其中的“*”号表示 指针类型不能丢掉*/
2、指针变量的初始化 与定义普通变量相同,C语言也允许在定义指针 变量的同时给指针变量置初始值: 存储类型基类型*指针变量名初始化值 给出的“初始化值”必须是与其基类型相同的对 象的地址。 若未给全局和 static型指针变量指定初始化值,其 初值自动为0(NUL),可直接使用; 局部与非 statici型指针变量的初始化是当每一次进 入函数或复合语句时进行的。它们在没有指定初值之 前其值无定义,不能直接使用。 例如:
14 2、指针变量的初始化 与定义普通变量相同,C语言也允许在定义指针 变量的同时给指针变量置初始值: 存储类型 基类型 *指针变量名=初始化值 ; 给出的 “初始化值” 必须是与其基类型相同的对 象的地址。 若未给全局和static型指针变量指定初始化值,其 初值自动为0 (NULL) ,可直接使用; 局部与非static型指针变量的初始化是当每一次进 入函数或复合语句时进行的。它们在没有指定初值之 前其值无定义, 不能直接使用。 例如:
main o int a 3 int“p=&a,spl=p 从这个例子可以看出:指针变量的初始化值 定要为前面已定义过的变量的地址,或在这之前已 被初始化过的指针变量名,且基类型应该一致。 15
15 main ( ) { int a ; int *p=&a , *p1=p ; …… } 从这个例子可以看出:指针变量的初始化值一 定要为前面已定义过的变量的地址,或在这之前已 被初始化过的指针变量名,且基类型应该一致