810.2指针变量一定义与赋值 基类型指针变量名; 161: float *p; float a; p=&a; scanf(%f,p): printf(*p) (1)指针运算符“*”在变量定义时和参与运算时意义不 (2)在定义指针变量时必须指定基类型 注意:只能将变量的地址赋给一个指针变量,而不能将 个常数赋给一个指针变量,两者类型不同,零除外(代 表NULL)!且变量的类型和指针的基类型要一致! float a; int pointer I pOinter1=2001;/错*/ pointer1=&a;/错*/
§10.2 指针变量 基类型 *指针变量名; §10.2 指针变量----定义与赋值 例: float * p; float a; p=&a; scanf(“%f”,p);printf(*p); (1)指针运算符“*”在变量定义时和参与运算时意义不 同 (2) 在定义指针变量时必须指定基类型 注意:只能将变量的地址赋给一个指针变量,而不能将一 个常数赋给一个指针变量,两者类型不同,零除外(代 表NULL)!且变量的类型和指针的基类型要一致! float a; int * pointer_1; pointer_1=2001;/*错*/ pointer_1=&a; /*错*/
大学出 10.2.2指针变量的引用 GHUA UNIVERSITY PRESS 例10.1通过指针变量访问整型变量 #include <stdio. h> void main() int a, b; int *pointer 1, pointer 2; a=100;b=10; pointer 1=&a pointer 2=&b; printf(%od, %dn, a, b) printf( %/od, %dn,,pointer l,*pointer 2)
10.2.2 指针变量的引用 例10.1 通过指针变量访问整型变量 #include <stdio.h> void main ( ) { int a,b; int *pointer_1, *pointer_2; a=100;b=10; pointer_1=&a; pointer_2=&b; printf(“%d,%d\n”,a,b); printf(“%d,%d\n”,*pointer_1, *pointer_2); }
清华大学出版社 TSINGHUA UNIVERSITY PRESS 运算符“&”和“*”:(优先级同,自右向左) int a int*pointer; pointer 1=& a; (1)&* pointer1的含义是什么? 与&a相同 (2)*&a的含义是什么? 与a等价。 (3)(* pointer1)+与* pointer1++区别如何? 前者a++;后者得到的是a的值,且 pointer_1最后指向 单元a的“下一个”单元,实际移动了 sizeof(int)个字
运算符“&”和“*”: (优先级同,自右向左): int a;int *pointer; pointer_1=&a; (1)&* pointer_1的含义是什么? 与&a相同 (2) *&a的含义是什么? 与a等价。 (3) (*pointer_1)++与*pointer_1++区别如何? 前者a++;后者得到的是a的值,且pointer_1最后指向 单元a 的“下一个” 单元,实际移动了sizeof(int)个字 节
例10.2输入a和b两个整数,考虑如下输出 # nclude <stdio void main {int*p1,*p2,* 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)
例10 . 2 输入a和b两个整数,考虑如下输出 #include <stdio.h> void 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); }
10.2,3指针变量作为函数参数 例10.3通过函数实现两数互换排序 #include <stdio. h> void main O void swap(int *pl, int*p2) f void swap(int*p1, int*p 2); I int *temp int a, b x temp=*p 1; int pointer, *pointer 2 p scanf( %od, %od, &a, &b) p 2=*temp; pointer=&a; pointer2=&b; if(a<b)swap(pointerl, pointer 2); printf( %od9d”,ab); /*temp使用前未赋初值, 可能指向一个非法单元*
10.2.3 指针变量作为函数参数 例10 . 3 通过函数实现两数互换排序 #include <stdio.h> void main() {void swap(int *p1,int *p2); int a,b; int *pointer1,*pointer2; scanf(“%d,%d” ,&a,&b) pointer1=&a; pointer2=&b; if(a<b)swap(pointer1, pointer2) ; printf(“%d,%d” ,a,b); } void swap(int *p1,int *p2) { int temp; temp=*p1; *p1=*p2; *p2= temp; } /*temp使用前未赋初值, 可能指向一个非法单元*/ * * *