指针小结 指针的各种定义 int*pp为指向整形数据的指针变量 int*p[n定义指针数组p,它由n个指向 整形数据的指针元素组成 int(*p)[n]:p为指向含n个元素的一维数 组的指针变量 int*pO:p为返回一个指针的函数,该指 针指向整形数据
指针小结 • 指针的各种定义 int *p :p为指向整形数据的指针变量 int *p[n]: 定义指针数组p,它由n个指向 整形数据的指针元素组成 int (*p)[n]: p为指向含n个元素的一维数 组的指针变量 int *p(): p为返回一个指针的函数,该指 针指向整形数据
指针小结 int(*p)O:p为指向函数的指针,该函数 返回一个整形值 int**pp是一个指针变量,它指向一个 指向整形数据的指针变量
指针小结 int (*p)(): p为指向函数的指针,该函数 返回一个整形值 int **p:p是一个指针变量,它指向一个 指向整形数据的指针变量
指针小结 指针的运算 p++ p p+l p+=1 p-=1 了解上述运算的含义
指针小结 • 指针的运算 p++ p— p+I p-I p+=I p-=I 了解上述运算的含义
指针小结 指针变量的赋值 将一个变量地址赋给一个指针变量 p-&a;(将变量a的地址赋值给p) p= array;(将数组aray的首地址赋值给p) p-&aray[];(将数组aray的某元素地址赋值 给p) p=max,(将max函数的入口地址赋值给p) pl=p2;(将一个指针变量的地址赋给另一个)
指针小结 • 指针变量的赋值 将一个变量地址赋给一个指针变量 p=&a; (将变量a的地址赋值给p) p=array; (将数组array的首地址赋值给p) p=&array[i]; (将数组array的某元素地址赋值 给p) p=max; (将max函数的入口地址赋值给p) p1=p2; (将一个指针变量的地址赋给另一个)
指针小结 指针变量可以为空值,即该指针变量不 指向任何变量 表示为:p=nul; 其中n山实际上就是整数0 般说来通常在程序开头预定义的时候 将nul定义为0 如 #define null o
指针小结 • 指针变量可以为空值,即该指针变量不 指向任何变量 表示为:p=null; 其中null实际上就是整数0 一般说来通常在程序开头预定义的时候 将null定义为0 如: #define null 0
指针小结 。两个指针变量可以相减 如果两个指针变量指向同一个数组的 元素,则两个指针变量值之差是两个指 针之间的元素的个数 两个指针变量比较 若两个指针指向同一个数组的元素, 则可以进行比较,如果两指针不是指向 同一个数组,则无法比较
指针小结 • 两个指针变量可以相减 如果两个指针变量指向同一个数组的 元素,则两个指针变量值之差是两个指 针之间的元素的个数 两个指针变量比较 若两个指针指向同一个数组的元素, 则可以进行比较,如果两指针不是指向 同一个数组,则无法比较
指针小结 Void指针类型 即可定义一个指针变量,但不指定它 是指向哪一种类型数据的,在将它的值 赋给另一指针变量时要进行强制类型转 换使之适合于被赋值的变量类型 如 char* p void * p2 pI=(char *)p2;
指针小结 • Void指针类型 即可定义一个指针变量,但不指定它 是指向哪一种类型数据的,在将它的值 赋给另一指针变量时要进行强制类型转 换使之适合于被赋值的变量类型 如: char *p1; void *p2; p1=(char *)p2;
指针小结(程序一) 使用vojd指针类型的函数 ●# include #include e void *fun(int x, int y) if(x>=y) return(&x
指针小结(程序一) 使用void指针类型的函数 #include #include void *fun(int x,int y) { if(x>=y) { return(&x); }
指针小结(程序一) else return( &y) maino int Int p:
指针小结(程序一) else { return(&y); } } main() { int x,y; int *p;
指针小结(程序一) scanf("%od%d"x,y) int )fun(x, y) printf("the max number is %d: n", p) system("pause")
指针小结(程序一) scanf("%d%d",x,y); p=(int *)fun(x,y); printf("the max number is %d :\n",*p); system("pause"); }