社区
C语言
帖子详情
为什么能够改变实参的值?
dainichuhai
2007-07-02 11:49:38
各位达人
指针作形参为什么能够改变main中的实参的值,小弟不理解。请指教越详细越好!
#include<stdio.h>
void swap(int *,int *);
main()
{
int a=10,b=11;
swap(&a,&b);
printf("%d--%d",a,b);
getch();
}
void swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
...全文
225
9
打赏
收藏
为什么能够改变实参的值?
各位达人 指针作形参为什么能够改变main中的实参的值,小弟不理解。请指教越详细越好! #include void swap(int *,int *); main() { int a=10,b=11; swap(&a,&b); printf("%d--%d",a,b); getch(); } void swap(int *x,int *y) { int temp; temp=*x; *x=*y; *y=temp; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
西安风影
2007-07-03
打赏
举报
回复
主程序已经把a,b变量的地址告诉行参了,当然该函数可以改变a,b的值了.
#include<stdio.h>
void swap(int *,int *);
main()
{
int a=10,b=11;
swap(a,b);
printf("%d--%d",a,b);
getch();
}
void swap(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
} 这样就不能改变a,b的值。
但是注意一点的是swap函数是无法改变a,b变量的地址值。
所以说函数行参是无法改变对应实参变量的值,但必须看清参数的数据类型,
此处参数是指针而不是a,b变量本身的内容。
believefym
2007-07-02
打赏
举报
回复
因为是直接对指针所指的内存进行操作,当然会改变实参
但是不是指针的话,只是对实参的一个copy进行操作,函数返回后实参还是原来的实参
xlbdan
2007-07-02
打赏
举报
回复
因为指针指向的就是你要交换的变量的地址,所以对指针进行间接运算就相当于对那个变量进行了运算
可以想像成这样:
int a,b;
int *x=&a,*y=&b;
*x=5;*y=6; //现在a=5,b=6了
SoledadWith
2007-07-02
打赏
举报
回复
这是以前教科书上的例题吧
实际上就是自己给自己改变的,指针传递地址,又取其中存放的值,这跟不用指针就是一样了
bargio_susie
2007-07-02
打赏
举报
回复
随便去找本书,看下指针那节。。。即使你们最痛恨的谭老师那书上也对这个问题,用图描述得清清楚楚。。。。
我啃
2007-07-02
打赏
举报
回复
int *指向int(可以修改的)的指针
如果想不能修改指向的内容可以用
const int *指向const int(不可以修改)的指针
sms88
2007-07-02
打赏
举报
回复
指针就是这样子
jun_ma03
2007-07-02
打赏
举报
回复
指针变量是一个指向地址的变量,所以它存储的是变量的地址当变量的地址
改变时,变量里面的值也会随着改变,明白吧!
bestoak
2007-07-02
打赏
举报
回复
函数改变的是指针指向的地址空间里面的值。而函数调用结束后释放的空间是指针变量占用的空间。两个空间不同。所以,结果保留了下来。
C# For Unity系列之中级篇
为什么学习泛型集合? F) 泛型集合与普通集合的性能测试对比实验。 G) 学习“泛型约束”,以及“泛型约束”的适用条件。 四:委托与事件 &...
Java如何在调用方法时,同时
改变
实参
的
值
? 即 形参
改变
实参
关键点:
实参
:如果是基本类型,则
实参
不会变(传的是
值
); 如果是对象,则
实参
会
改变
(传的是引用)。 具体实例和分析如下: 示例一:传入参数为整形变量: public class Java{ public static void main(String[] args) { int b =5; changeInt(b); System.out....
关于java中形参
值
和
实参
值
的总结,什么时候会
改变
实参
值
首先Java里面都是
值
传递,也就是形参的
值
改变
是不会
改变
实参
的
值
的。
C语言函数传递中形参的变化不会
改变
实参
的
值
如题,C语言在函数间传递参数时,形参的变化是不会
改变
实参
的
值
的!!! 如: include void main(){ void swap(int,int); int a,b; scanf("%d,%d",&a,&b); swap(a,b); } void swap(int a,int b){ int temp; temp = a; a = b;
【疑问】C++结构体(数组)指针作为函数参数,会不会修改
实参
的
值
?
C++结构体指针作为函数参数,不会修改
实参
的
值
?前言实例原因又一 前言 最近学了C++的指针和结构体,记得函数传参时,形参传递指针,则可以修改
实参
的
值
。 可是今天看到一个关于结构体的数组作为形参传入函数中,却成功修改
实参
的
值
,感觉很是疑问? 实例 #include<iostream> using namespace std; //英雄结构体 struct hero { string name; int age; string sex; }; void changeArray(hero
C语言
69,374
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章