C语言练习(4)——指针传址

指针的传址经常把我弄晕,今天遇到一道比较有意思的题目可以加深一下对指针传址的了解。
一般我们设置指针都习惯用*p表示,我们把 p 称为指针变量,p 里存储的内存地址处的内存称为 p 所指向的内存。
指针变量 p 里存储的任何数据都将被当作地址来处理。
题目:

{
	#include   <stdio.h>
	int main()
	int a=7,b=8,*p,*q,*r;
	p=&a;
	q=&b;
	r=p;
	p=q;
	q=r;
	printf(" *p=%d\n *q=%d\n a=%d\n b=%d\n",*p,*q,a,b);
	getch();//窗口保留函数,调试使用
	return 0;
}

输出结果:在这里插入图片描述
下面来分析一下这个函数:

#include   <stdio.h>
int main()

{
int a=7,b=8,*p,*q,*r;
p=&a;
q=&b;//这时*p=7,*q=8,          p指向a的地址,q指向b的地址
r=p;   //这时*p=7,*q=8,*r=7,r指向p也就是指向a的地址
p=q; //这时p指针被修改,指向了q也就是b的地址:*p=8,*q=8,*r=7
q=r;  //这时q指针被修改,指向了 r也就是a的地址;*p=8,*q=7,*r=7
/*在这个过程中ab的值并没有改变,发生变化的是指针指向的地址*/
/*所以,a=7,b=8,*p=8,*q=7,*r=7*/
printf(" *p=%d\n *q=%d\n a=%d\n b=%d\n",*p,*q,a,b);
getch();//窗口保留函数,调试使用
return 0;
}

这个题的中心思想是:指针不变,但是指针的指向发生改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值