c语言函数中要改变参数,c语言改变函数参数的值

C语言函数调动参数问题

#include stdio.h

成都创新互联公司是一家专注于成都网站建设、做网站与策划设计,小店网站建设哪家好?成都创新互联公司做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:小店等地区。小店做网站价格咨询:028-86922220

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

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语言中,如果一个函数需要修改用作参数的变量值的时候 ,参数应该声明为指针类型

先吐槽一下,前面的回答什么鬼,完全答非所问嘛。看了下时间,楼主应该早就弄清楚了,这里分享一下我的认识,方便后面同学解惑什么的,如果有什么不对的地方,请大牛指正。

在程序里定义了一个变量,可以通过直接给这个变量赋值来改变它的值。也可以在另外一个函数来改变这个变量的值,这个时候传入函数的就要是这个变量的地址而不只是它的一个值,这里传入地址是实参,值是形参。这个时候就要把传入的变量设为指针类型的了。就比如 void sum(int a, int b ,int *c) { *c = a + b } void main(){ int c; sum(1,2,c); printf("%d\n",c);} 这里就是在函数内部直接改变了c的值了。

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

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

int

a=5;

void

f(int

*a)

{

*a

=

6;

}

调用函数

f(a);

则现在

a=6;


网站栏目:c语言函数中要改变参数,c语言改变函数参数的值
URL分享:http://cdiso.cn/article/hdhcop.html

其他资讯