新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#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指向的变量赋值,如果没有加*就是改变指针的指向。
先吐槽一下,前面的回答什么鬼,完全答非所问嘛。看了下时间,楼主应该早就弄清楚了,这里分享一下我的认识,方便后面同学解惑什么的,如果有什么不对的地方,请大牛指正。
在程序里定义了一个变量,可以通过直接给这个变量赋值来改变它的值。也可以在另外一个函数来改变这个变量的值,这个时候传入函数的就要是这个变量的地址而不只是它的一个值,这里传入地址是实参,值是形参。这个时候就要把传入的变量设为指针类型的了。就比如 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语言可以通过传递指针来改变变量的值:
int
a=5;
void
f(int
*a)
{
*a
=
6;
}
调用函数
f(a);
则现在
a=6;