【c++】c语言入门到c++使用高手: c语言入门之指针(二) 第九章 指针第二节 变量的指针和指向变量的指针变量-11. 指针变量的定义变量的指针就是变量的地址,我们可以定义一个指向变量的指针变量,这种指针变量,我们在定义的时候,会引入一个*,在定义的语句中,表示这是一个指针变量指针变量定义的一般形式: 类型标识符 *标识符 ,标识符就是指针变量的名字inti//普通变量//指针变量定义是,变量名前有个*,这个需要区别int*mypoint;// 定义两个指针变量,这个指针变量,指向整型变量float*mp3;//指向实型变量的指针如何让整型指针变量指向一个整型变量,可以用赋值语句是一个整型指针变量指向一个整型变量(普通变量)inti10;// 是取地址符, 等价与mypoint1指向iint*mypointi;说明:定义指针变量的时候,指针变量前是有*的,表示正在定义一个指针变量,但是使用指针变量的时候,指针变量名前是没有*的,指针变量名是mypoint一个指针变量只能指向同一个类型的变量(普通变量)inti1;floatj2.0;float*mypoint;mypointi;//错误mypointj;// 正确,类型相匹配2. 指针变量的引用牢记: 指针变量中只存放地址,不要将一个整型变量赋值给一个指针变量int *mypoint 4;//mypoint是指针变量,而4是整数指针变量相关的运算符有两个: 取地址符, scanf()*: 指针运算符(间接访问运算符):a) 乘法运算符, 3*4b) 定义指针变量的时候我们使用’*,这个叫指针运算符,若这个*不出现在指针运算定义的场合,也不是乘法运算符,那么这个*依旧是指针运算符,只不过代表的是该指针变量所指向的变量#includeiostreamintmain(){inta100,b200;int*p1,*p2;//这里*表示这两个变量是两个指针变量p1a;//把变量a的地址赋给了p1,也就是说现在p1指向了ap2b;printf(a: %d, b: %d\n,a,b);printf(*p1: %d, *p2: %d,*p1,*p2);// *p1 a, *p2 breturn0;}解析(部分常见用法解析)*p1: 取地址运算符和指针运算符优先级相同,自右至左结合的,所以可以看作(*p1), (*p1)代表但是p1指向的变量,上例中为a, (*p1)等价与a,也就是p1.*a:取地址运算符和指针运算符优先级相同,自右至左结合的,所以可以看作*(a),上例可以看作*(p1),也就等价于p1指向的变量,最终结果等价于a.intd*a;//也就等价于intda;(*p): *p1是a, 所以等价于a;*p: 和*是同级的,从右到左结合,所以等价于*(p),int i5; i; // ii1 //同理 int *p; //同理,指针变量自加1,也就是变量p中的内容也要自加 //但是具体自加的数值和该指针变量所指向的变量类型有关,如果是整型,则地址增加4,int占4个字节 //意味着p指向下一个变量 *p#includeiostreamintmain(){inta100,b200;int*p1,*p2;//这里*表示这两个变量是两个指针变量p1a;//把变量a的地址赋给了p1,也就是说现在p1指向了ap2b;printf(a: %d, b: %d\n,a,b);printf(*p1: %d, *p2: %d\n,*p1,*p2);// *p1 a, *p2 b// printf((*p1): %d\n, (*p1));// 一定要注意这种用法printf(*p1: %d\n,*p1);//这里输出还是为100,因为是先输出*p1,然后再将p1的值自加printf(*p1: %d\n,*p1);//这里输出是200,p1先自加,再输出;return0;}指针的互相赋值#includeiostreamintmain(){// pmax指向大值,pmin指向小值//仅作演示,方法不是最优int*pmax,*pmin,*p,a,b;a1;b8;pmaxa;pminb;if(ab){ppmax;pmaxpmin;pminp;}printf(pmax: %d, pmin: %d\n,*pmax,*pmin);return0;}