@ 指针实例 如执行: 如有: *intp=Y+4; int X,*intp,Y; 3 1000 X=3; Y 4 1004 Y=4; →X 8 1000 intp=&X; Y 4 1004 intp 1000 intp 1000 注意:不能用 intp=100; 因为我们永远不知道变量存储的真实地址,而且 程序每次运行变量地址可能都不同。 司 LoCCS
指针实例 如有: int X, *intp, Y; X=3; Y=4; intp=&X; 如执行: *intp=Y+4; 注意:不能用 intp=100; 因为我们永远不知道变量存储的 真实地址,而且 程序每次运行变量地址可能都不同
③ 指针使用 ©指针变量可以指向不同的变量。 intp=&x; intp=&y。这时,intp与x无任何关系。 同类的指针变量之间可相互赋值,表示二个指针指 向同一内存空间。 intpl=intp; 空指针 ·指针没有指向任何空间 ·空指针用常量NULL表示,NULL的值一般赋为O ·不能引用空指针指向的值 LoCCS
指针使用 指针变量可以指向不同的变量。 intp=&x; intp=&y。这时,intp与x无任何关系。 同类的指针变量之间可相互赋值,表示二个指针指 向同一内存空间。 intp1=intp; 空指针 • 指针没有指向任何空间 • 空指针用常量NULL表示,NULL的值一般赋为0 • 不能引用空指针指向的值
指针变量的使用 设有定义 执行语句: 执行语句: 执行语句: int x,y; X=23; p1=&x; *p1=34; int *p1,*p2; y=234; p2=&y; p2=p1; 1000 X 1000 23 1000 23 X 1000 34 X 1004 y 1004 234 y 1004 234 y 1004 234 y 1008 p1 1008 p1 1008 1000 p1 1008 1000 p1 1012 p2 1012 p2 1012 1004 p2 1012 1000 p2 Loccs
指针变量的使用 设有定义 int x, y; int *p1, *p2; 1000 x 1004 y 1008 p1 1012 p2 执行语句: x=23; y=234; 1000 23 x 1004 234 y 1008 p1 1012 p2 执行语句: p1=&x; p2=&y; 1000 23 x 1004 234 y 1008 1000 p1 1012 1004 p2 执行语句: *p1=34; p2=p1; 1000 34 x 1004 234 y 1008 1000 p1 1012 1000 p2
指针实例 有以下结构 pI a B p2 b 比较执行pl=p2和*pl=*p2后的不同结果。 解: A B pl a pI a B B p2 b p2 b 司 LoCcS
指针实例 有以下结构 A p1 a B p2 b 比较执行 p1=p2和 *p1= *p2后的不同结果。 解: A p1 a B p2 b B p1 a B p2 b
指针的初始化 ©指针在使用前必须初始化。 和别的变量一样,定义指针不初始化就引用是 一个比较普通的错误。 没有初始化的指针可能指向任意地址,对这些 指针作操作可能会导致程序错误。 NULL是一个特殊指针值,称为空指针。它的值 为0。它可被用来初始化一个指针,表示不指 向任何地址。 思考:int*p;*p=5; 有什么问题? 司 LoCCS
指针的初始化 指针在使用前必须初始化。 和别的变量一样,定义指针不初始化就引用是 一个比较普通的错误。 没有初始化的指针可能指向任意地址,对这些 指针作操作可能会导致程序错误。 NULL是一个特殊指针值,称为空指针。它的值 为0。它可被用来初始化一个指针,表示不指 向任何地址。 思考:int *p; *p = 5; 有什么问题?