C语言中的指针为什么会改变变量的值?

chara,*pa;a=10;pa=&a;*pa=20;printf("%d\n",a);为什么a会变成20?pa的地址改变会影响到a吗?... char a,*pa;
a=10;
pa=&a;
*pa=20;
printf("%d\n",a); 为什么a会变成20? pa的地址改变会影响到a吗?
展开
 我来答
匿名用户
2013-10-21
展开全部
pa=&a;句是将指针*pa指向变量a。pa存放的是a的地址,*pa其实就是a,可以理解为把a换了一个名字表示。*pa=20就是对a进行赋值操作,等于a=20;a的值当然改变了。看看指针的知识吧!
匿名用户
2013-10-21
展开全部
一、指针的地址就是变量的地址啊 *pa = 20; 就是改变pa指向的变量的值 就是改变a的值 二、如果你把pa的地址改变了 就是说不指向a的地址了 此时你在 使用 *pa = 20; 就不会改变a的值了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
推荐于2017-09-28 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:868万
展开全部
  1. 计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

  2. 简而言之,指针储存的是内存物理地址,通过物理地址,你能够操作变量的值,效果和通过标识符操作变量的值完全相同。

  3. 例如:

    int a=10;    //a是一个整形标识符,通过a,你能够操作内存当中一块4字节长的空间。

    int* p=&a;//p是一个整形指针符,里面储存的是a的内存地址。

    *p=5;    //这里*p的意思就是操作p储存那块4字节的内存,效果和a=5相同。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-21
展开全部
pa=&a;把指针指向变量a的首地址,然后赋值pa=20;a的地址就改变了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式