c语言函数改变参数 c语言 变参函数

c语言中指针函数可以改变实参的值吗

c语言中形参与实参的关系是:形参是实参的值副本。无论参数的类型是什么,传递到子函数中的形参只是实参的值。所以,在改变形参变量自身的值时,是与实参无关的。换句话说,形参的改变不会影响到实参。

成都创新互联专业为企业提供阿克苏网站建设、阿克苏做网站、阿克苏网站设计、阿克苏网站制作等企业网站建设、网页设计与制作、阿克苏企业网站模板建站服务,10多年阿克苏做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

但,如果参数类型是指针类型,则可以通过对指针变量所指向的地址中的数据进行修改,达到改变实参地址中的数据目的。

因此,使用swap函数进行数据交换时,必须保证两点:

1.

参数必须是指针类型,指向待交换的数据

2.

交换时,必须交换地址中的数据,而不是交换地址本身。

参考代码:

//错误的交换代码1

void swap1( int a, int b ) //参数不是待交换数据的指针

{

int t=a;

a=b;

b=t;

}

//错误的交换代码2

void swap2( int *a, int *b )

{

int *t=a;//交换形参变量本身

a=b;

b=t;

}

//正确的交换代码

void swap( int *a, int *b )

{

int t=*a;//交换形参变量地址中的数据,指针变量不变

*a=*b;

*b=t;

}

c语言中函数可否改变参数值

C语言可以通过传递指针来改变变量的值:

int

a=5;

void

f(int

*a)

{

*a

=

6;

}

调用函数

f(a);

则现在

a=6;

C语言函数调动参数问题

#include stdio.h

//指针加*是不会改变其指向的,只会修改其中的内容

int *f(int *s, int *t) //s指向i,t指向j

{

if (*s  *t) //这里比较的是i与j的值

{

*s = *t; //*s表示取s地址的内容,即i,所以*t是表示j,这里是将j赋值给i

//所以改变了i的值,但是并没有改变s与t的指向,还是分别指向i与j

}

return s;

}

int main()

{

int i = 3, j = 5;

int *p = i; //p是指向i的

int *q = j; //q是指向j的

int *r;

r = f(p, q); //将s的地址赋值给r

printf("%d, %d, %d, %d, %d\n", i, j, *p, *q, *r);

return 0;

}

运行结果是:5, 5, 5, 5, 5

#include stdio.h

int k = 5;

void f(int *s) //这里传参只是将p的地址赋值给s,也就是将s指向了m

{

s = k; //将s指向k,并没有改变p的指向

}

int main()

{

int m = 3;

int *p = m;

f(p); //所以程序执行完,p还是指向m,而s是指向k的

printf("%d, %d\n", m, *p);

return 0;

}

运行结果:3, 3

#include stdio.h

//指针加*是不会改变其指向的,只会修改其中的内容

//如果指针不加*,则赋值就是改变其指向

int *f(int *s, int *t) //s指向i,t指向j

{

if (*s  *t) //这里比较的是i与j的值

{

s = t; //s表示的是指针,这里不是表示其内容,所以这里是将t指向的地址赋值给了s

//也就是s与t是指向同一块内存空间,也就是将s也指向了j

}

return s;

}

int main()

{

int i = 3, j = 5;

int *p = i; //p是指向i的

int *q = j; //q是指向j的

int *r;

r = f(p, q); //将s的地址赋值给r,r也指向了j

printf("%d, %d, %d, %d, %d\n", i, j, *p, *q, *r);

return 0;

}

运行结果:3, 5, 3, 5, 5

这一类题目其实只要打个草稿就行了,写两个数字,然后*p就是表示取其中的内容,p就表示其指向(也就是内容的地址),只要是加*的赋值就表示改变其p指向的变量赋值,如果没有加*就是改变指针的指向。

C语言中可否定义一个函数,这个函数的形参数量可以改变?

当然可以,最典型的就是printf函数了,这个函数采用的就是可以改变形参数量的方法,百度上搜索:“C语言不定参数”就可以查到相关信息了C语言中的不定参数


网站栏目:c语言函数改变参数 c语言 变参函数
标题URL:http://myzitong.com/article/ddoisjj.html