您的位置:首页 > 编程语言 > C语言/C++

如何通过函数调用得到n个要改变的值(摘抄自谭浩强C语言)

2014-07-28 10:57 330 查看
如果想通过函数调用得到n个要改变的值,可以:

1、在主调函数中设n个变量,用n个指针变量指向它们;

2、然后将指针变量作实参,将这n个变量的地址传给所调用的函数的形参;

3、通过形参指针变量,改变该n个变量的值;

4、主调函数中就可以使用这些改变了值的变量。

程序举例详见C程序设计(谭浩强)226-229页

想要通过函数调用交换两个数据值得正确程序:

void swap(int *p1,int *p2)

{

int temp;

temp=*p1;

*p1=*p2;

*p2=temp;

}

上面程序的理解是,通过调换指针所指向的变量值,达到实参中指向地址中的变量值的调换,最终达到变换目的

错误程序如下:

void swap(int *p1,int *p2)

{

int *p;

p=p1;

p1=p2;

p2=p;

}

程序的意图是,通过交换实参指针pointer_1和指针pointer_2的值,使其达到交换的目的

但存在问题,当在调用函数中交换形参指针p1和p2的值后,不能讲变化后的形参传递给实参,故不能达到实参指针变量交换的目的

C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量作函数参数也要遵循这一规则。不可能通过调用函数来改变实参指针变量的值,但可以改变实参指针变量所指变量的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: