|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
//指针指向的值的输出和指针变量的赋值
#include<stdio.h>
int main()
{
int *p_a,*p_b;
int a,b;
a=1;
b=0;
p_a=&a;
printf("1---p_a=%d\n",p_a);//p_a指向a的地址所以p_a输出的是a的地址 p_a=1245044
printf("2---a=%d\n",a);//a输出a的值 a=1
printf("----p_a=%d\n",*p_a);//通过*对a的地址取值,所以p_a输出的是a的值 p_a=1
*p_a=2;
printf("3---a=%d\n",a);//通过指针变量给变量赋值a的值发生了改变 a=2
printf("4---p_a=%d\n",p_a);//指针指向的a的地址没有改变 p_a=1245044
p_b=&b;
printf("5---*p_b=%d\n",*p_b);//通过*对b的地址取值,所以p_b输出的是b的值 *p_b==0
printf("p_b=%d\n",p_b); //输出时没有使用*取值,所以p_b输出的是b的地址 b=1245040
printf("b=%d\n",b); //b输出b的值 b=0
*p_b=b;
printf("6---p_b=%d\n",p_b); //p_b输出的是b的地址 p_b=1245040
*p_b=3;
printf("7---p_b=%d\n",p_b); //p_b输出的是b的地址 p_b=1245040
printf("8---b=%d\n",b); //通过指针变量给变量赋值 b的值发生了改变 b=3
p_b=b; //没有指针变量没有*,或者=号后面的变量没有& 编译器会给出错误警告
printf("9---p_b=%d\n",p_b);//p_b输出 3 p_b=3
printf("10---b=%d\n",b); //输出b的值 b=3
}
/*通过上面的各种组合和对应的结果看出
1) p_a=&a;
输出时 p_a 指向的是a的地址,a不受被指向的影响,输出本身的值。
*p_a 输出a的值,充分说明*用在输出参数前面时是用来取值的
2)*p_a=2;
输出时 a=2,这是因为*p_a通过指向给a赋了新值了。所以a从1变成了2;
p_a在这里依旧是指向的a的地址
3) p_b=&b;
输出时 p_b 指向b的地址,就输出b的地址
4)p_b=b;
这样的书写格式是会收到编译器警告的,但是貌似还是可以有输出,
不知道这样的强行输出会不会对输出结果有影响
p_b 输出b的值3 b也输出自己的值
虽然总结了这么多,但是我还是分不清p_a 和p_b什么时候是指针,什么时候是指针变量。知道的朋友请给讲解一下
谢谢了{:1_1:}
*/
/*
以上是我自己总结的,肯定会有疏漏和错误的地方,希望看到的朋友给予补充和指正
一起努力,有经验一起分享
*/
|
|