找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2712|回复: 1
打印 上一主题 下一主题
收起左侧

请教c语言中指针所指地址的值变化的问题

[复制链接]
回帖奖励 2 黑币 回复本帖可获得 2 黑币奖励! 每人限 1 次(中奖概率 40%)
跳转到指定楼层
楼主
ID:338940 发表于 2019-3-25 11:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有以下两个程序,程序1中为什么*p将m的地址值传递给*s之后,*s又指向了k的地址值,到最后*p的所指向大的值还是不变呢?
程序2中为将i和j的地址值赋给*p和*q之后,再调用f函数,为什么他们所指向的地址的值又改变了呢,还有i,j不是实参吗?怎么它们的值会改变呢?
这两道题的区别是什么呢?怎么判断指针所指的地址变还是不变呢,希望懂的老哥来指导一下,谢谢!

程序1:
#include <stdio.h>
int k=5;
void f(int*s)
{
s=&k;
}
main()
{
int m=3,*p=&m;
f(p);
printf("%d,%d\n",m,*p);

}
结果是输出 3,3。
程序2:
#include <stdio.h>
int *f(int *s,int *t)
{
if(*s<*t)
*s=*t;
return s;
}
main()
{
int i=3,j=5,*p=&i,*q=&j,*r;
r=f(p,q);
printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);

}
结果输出为 5,5,5,5,5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:497656 发表于 2019-3-25 13:56 | 只看该作者
程序1中的s是局部变量在函数调用还没有完成之前和p指向的地址相同,当函数完成之后s的指向和p就不同了。程序2中的p所指的地址没有变,而是在调用函数中改变了他所指的地址中的变量值而已
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表