指针变量必须先赋值,再使用 例main() 〔inti=10; nt 2000 整型变量i printf(%od”,*p) 2001 10 2002 2003 危险! 2004 指针变量p 2005 随枳 maint 2006 nt p p=&k printf("%d”,*p)
例 main( ) { int i=10; int *p; *p=i; printf(“%d”,*p); } 危险! 例 main( ) { int i=10,k; int *p; p=&k; *p=i; printf(“%d”,*p); } 指针变量必须先赋值,再使用…... …... 2000 2004 2006 2005 整型变量i 10 指针变量p 2001 2002 2003 随机
★零指针与空类型指针 ☆零指针:(空指针) p指向地址为0的单元, ●定义指针变量值为零丿系统保证该单元不作它用 ●表示:int*p=0; 表示指针变量值没有意义 #define nulL 0 int *p=NULL cHat Bi void *p2 p=NUL与未对p赋值不同 pyH=亚 用途 ◆避免指针变量的非法引用 p2(void *p1 ◆在程序中常作为状态比越 ◆Void*类型指针 表示不指定p是指向哪一种 ●表示∶void*p 类型数据的指针变量 使用时要进行强制类型转换
零指针与空类型指针 ❖零指针:(空指针) ⚫定义:指针变量值为零 ⚫表示:int * p=0; p指向地址为0的单元, 系统保证该单元不作它用 表示指针变量值没有意义 #define NULL 0 int *p=NULL: ⚫p=NULL与未对p赋值不同 ⚫用途: ◆避免指针变量的非法引用 ◆在程序中常作为状态比较 例 int *p; ...... while(p!=NULL) { ...… } ❖void *类型指针 ⚫表示: void *p; ⚫使用时要进行强制类型转换 例 char *p1; void *p2; p1=(char *)p2; p2=(void *)p1; 表示不指定p是指向哪一种 类型数据的指针变量
2、使用指针访问变量(所指的) 例 运行结果: maino a:10 f86 整型变量a i int a; pa:10 Int>pa=&a &a: f86(hex) f87 10 a=10 pa: f86(hex) f88 指针变量pa &pa: f88(hex) f89 86-- printf("a: %dn", a print ntf( pa: odIn"* f8a pa printf("&a: %x(hex)n", &a) fsb printf("pa: %x(hex)n" pa) f8c printf("&pa: %x(hex)n", &pa)
2、使用 指针访问变量(所指的) main() { int a; int *pa=&a; a=10; printf("a:%d\n",a); printf("*pa:%d\n",*pa); printf("&a:%x(hex) \n",&a); printf("pa:%x(hex) \n",pa); printf("&pa:%x(hex) \n",&pa); } 运行结果: a:10 *pa:10 &a:f86(hex) pa:f86(hex) &pa:f88(hex) …... …... f86 f8a f8c f8b 整型变量 a 10 指针变量pa f87 f88 f89 f86 例:
例:输入两个数,并使其从大到小输出 maint i int* pl, p2, p, a, b scanf("%d, %d", &a, &b) 指针变量pl 2008 l=&a;p2=&b; 2002 指针变量p2 2006 if(a<b) 指针变量p 2006 i p=pI; pl=p2; p2=p; 2 整型变量a printf("a=d, b=%dn", a, b) 200 一整型变量b printf("max=%d, min=%odn", pl, p2) 运行结果:a=5,b=9 max min=5
例: 输入两个数,并使其从大到小输出 main() { int *p1,*p2,*p,a,b; scanf("%d,%d",&a,&b); p1=&a; p2=&b; if(a<b) { p=p1; p1=p2; p2=p;} printf("a=%d,b=%d\n",a,b); printf("max=%d,min=%d\n",*p1,*p2); } 运行结果:a=5,b=9 max=9,min=5 …... …... 指针变量p1 指针变量p 2000 2008 2002 2004 2006 指针变量p2 整型变量b 整型变量a 5 2006 9 2008 2006 2008 2006
8.2指针和函数 82.1指针变量作函数参数 8.22返回指针值的函数 8.2.3指向函数的指针变量
8.2 指针和函数 8.2.1 指针变量作函数参数 8.2.2 返回指针值的函数 8.2.3 指向函数的指针变量