C语言中到底如何通过地址值的传送在被调函数中直接改变调用函数中变量的值,请解释详细一点

谢谢了,我想问一下,在C中不是只可以是实参将值传递给形参么?那这么来是不是可以理解为,如果实参传递给形参的值是个地址的话,我们就可以把运行后的形参的值又传递到实参里面呢?... 谢谢了,我想问一下,在C中不是只可以是实参将值传递给形参么?那这么来是不是可以理解为,如果实参传递给形参的值是个地址的话,我们就可以把运行后的形参的值又传递到实参里面呢? 展开
 我来答
天云小店
2015-05-25 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:757万
展开全部

这个就是2种函数调用方式中的地址传递调用方式(另一种是传值方式)。


下面通过具体的实例来说明传地址调用方式:

#include<stdio.h>
void swap(int *p1, int *p2)  // 交换两个整数——交换形参值(地址)
{  // 实际上是改变p1与p2所指向的地址
    int *temp;
    temp = p1;
    p1 = p2;
    p2 = temp;
    printf("交换后:x=%d   y=%d\n", *p1, *p2);
}
void main()
{
    int x, y;
    scanf("%d%d", &x, &y);
    swap(&x, &y);  // 调用swap函数的时候,是将变量x和y的地址传递进去的,也就是使形参p1和p2分别指向变量x和y的地址,改变的实际上还是x和y的值,只不过是通过地址的变换来实现的
    printf("交换前:x=%d   y=%d\n", x, y);
}
貊佳寻8397
2010-09-16 · TA获得超过5500个赞
知道小有建树答主
回答量:858
采纳率:0%
帮助的人:1653万
展开全部
哈哈,自然是不会变了,这是值传递,也就是将数值传给被调函数,要实现通过函数调用改变主调函数的变量值,要用数组传递或指针传递
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JianBoth
推荐于2016-08-29 · TA获得超过272个赞
知道小有建树答主
回答量:372
采纳率:0%
帮助的人:164万
展开全部
#include <stdio.h>

void changeValue(int * pointer)
{
*pointer = 23;
}

int main()
{
int iNum;
int * iPointer;

iPointer = &iNum;

iNum = 10;
printf("%d\n",iNum);

changeValue(iPointer);

printf("%d\n",iNum);

}

1,LZ运行以上程序就应该可以明白了。

2,在changeValue的方法中,我们使用了一个int*,那么传递的就是一个地址,在方法里面我们将其内容进行改变,从而iNum的值也要进行改变。

3,希望对LZ所有帮助
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式