单目*间接访问运算符 通过指针间接访问指针所指向的对象。 例:inta=10; 直接写* p int“p=&a; /建立指向关系 &a printf(“%od”,a);/直接接读* printf(9d”,*p);/间接读* a 20 /间接写 &a 20 printf(%od”,a); printf(%d”,p); 单目*和&的互为逆运算: (&a)的值为a的值
单目* 间接访问运算符 通过指针间接访问指针所指向的对象。 例:int a=10; /*直接写*/ int *p=&a; /*建立指向关系*/ printf(“%d”,a); /*直接接读*/ printf(“%d”,*p); /*间接读*/ *p=20; /*间接写*/ printf(“%d”,a); printf(“%d”,*p); 单目*和&的互为逆运算: *(&a) 的值为a的值。 &a p a 1 0 &a p a 2 0
2。指针的正确用法 使用指针的目的:是给变量提供间接的操作,完成直接通 过变量名不能完成的操作,实现跨变量的作用域对变量实 施存取访问。 定义、使用方法步骤: (1)根据指针所指向数据的数据类型,定义指针变量; inta=10,b=20: int *pa, pb (2)建立指针和被指向数据的关系; pa=&a; pb=&b; (3)使用指针对被指向数据进行操作。 printf(%od %od", pa, pb;); 注 由于pa和pb是变量,不同时刻可指向不同数据; 例如:pa=&a;pb=&b;所以使用时,必须清楚 指针当前的指向
2。指针的正确用法 使用指针的目的:是给变量提供间接的操作,完成直接通 过变量名不能完成的操作,实现跨变量的作用域对变量实 施存取访问。 定义、使用方法步骤: (1)根据指针所指向数据的数据类型,定义指针变量; int a=10,b=20; int *pa,*pb; (2)建立指针和被指向数据的关系; pa=&a; pb=&b; (3)使用指针对被指向数据进行操作。 printf(“%d %d”,*pa,*pb;); 注: 由于pa和pb是变量,不同时刻可指向不同数据; 例如: pa=&a; pb=&b; 所以使用时,必须清楚 指针当前的指向
3。void指针和NULL指针 void指针是类型为void*的指针;(空类型指针) void*的指针是一种通用指针类型。表示该指针指向不定类 型 任何指针变量都可赋予整数0(一个特殊的指针,空指针) C语言用符号常量NULL表示空指针, NULL在stdo.h和 stdllib, h中定义: #define null o 通常,用NULL与非NULL判断某种操作的结果: void*p;p= malloc(10);判断p char sI=“abc”;s2l=“123”,*pc; pc=strstr(sl, s2) 判断pc
3。void指针和NULL指针 void指针是类型为void *的指针;(空类型指针) void *的指针是一种通用指针类型。表示该指针指向不定类 型。 任何指针变量都可赋予整数0(一个特殊的指针,空指针) C语言用符号常量NULL表示空指针, NULL在stdio.h和stdlib.h中定义: #define NULL 0 通常,用NULL与非NULL判断某种操作的结果: void *p; p=malloc(10); 判断p char s1[]=“abc”; s2[]=“123”,*pc; pc=strstr(s1,s2); 判断pc
72指针的运算 算术运算 (1)指针加、减一个整数 int a[10,*p=&a4; a0]a[]a2]a[3]a[4]a[5]a[6]a7a[8]a[9 a1000 p1008 p+3表达式的值为a7的地址;1008+3* sizeof(int)=1014 p-4表达式的值为a0的地址。1008-4* sizeof(int)=1000
7.2 指针的运算 1. 算术运算 (1)指针加、减一个整数 int a[10], *p=&a[4]; a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a 1000 p+3 表达式的值为a[7]的地址;1008+3*sizeof(int)=1014 p-4 表达式的值为a[0]的地址。1008-4*sizeof(int)=1000 p 1008
(2)两个指针相减 inta[10l,“pl=&a2],“p2=&a[7]; intb|6],*p3=&b|4l; float c5,*p4-=&b|3}; ao]a[]a[2]a3]a[4]a[5]a[6]a[7a8]a[9 a1000 p 11004 21014 p2-p1表达式的值整型数;表示p1与p2之间间隔元素的数目。 (1014-1004) /sizefo(int)=10/2=5 p3-p1无意义; p4-p2无意义
(2)两个指针相减 int a[10], *p1=&a[2], *p2=&a[7]; int b[6], *p3=&b[4]; float c[5], *p4=&b[3]; a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a 1000 p2-p1 表达式的值整型数;表示p1与p2之间间隔元素的数目。 (1014-1004)/sizefo(int)=10/2=5 p3-p1 无意义; p4-p2 无意义. p1 1004 p2 1014