“指针变量作为函数参数的作用:将一个变量的地址传送到另一个函数中”这句话怎么理解?谢谢
4个回答
展开全部
一般来说,一个函数里的局部变量只能在这个函数里被访问到。比如在函数foo中定义了一个局部变量a,然后调用另一个函数bar,在bar里是访问不到a的。但如果想在bar里修改a该怎么办呢?
注意到函数的参数是函数对外的接口,相当于函数的输入,一个自然的想法是将a当成参数传递给bar。但这种情况下传递给bar的其实是a的一个拷贝,是与a独立的一个变量,尽管二者的值相等。在bar里修改这个拷贝的变量对a没有任何影响。
一个解决办法便是通过传递a的地址(即指向a的指针)来代替直接传递a。这样在bar里就可以通过这个地址访问并修改a了。
注意到函数的参数是函数对外的接口,相当于函数的输入,一个自然的想法是将a当成参数传递给bar。但这种情况下传递给bar的其实是a的一个拷贝,是与a独立的一个变量,尽管二者的值相等。在bar里修改这个拷贝的变量对a没有任何影响。
一个解决办法便是通过传递a的地址(即指向a的指针)来代替直接传递a。这样在bar里就可以通过这个地址访问并修改a了。
展开全部
你可以理解为指针是一条路,在函数里面可以沿着它去修改它指的内容,不然的话是不能访问到原版变量的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通俗点讲就是,你问一个人路时,那个人把你要去的地方的地址告诉了你,而不是直接将那个地方的情况详细的说了一遍!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数的参数传递有三种方式:值传递,指针传递,引用传递
假如定义一个函数 func(int a)
现在有一个整型变量int x = 8;
1、值传递:func(x),就是调用函数时将x的值传入函数,注意!!!这时传入的是x变量的副本,而不是x变量本身,虽然副本和本身的值一样,但是存储地址不一样,所以对副本的改变不会影响本身。
2、指针传递:直接将变量x的地址传入,这是func()函数要改写,func(int *a);然后定义一个指针
指向x :int *px = x;此时调用func(px),因为传入的是x的地址,所以此x就是确定的,更改指针所指位置的值,也就更改了x的值
假如定义一个函数 func(int a)
现在有一个整型变量int x = 8;
1、值传递:func(x),就是调用函数时将x的值传入函数,注意!!!这时传入的是x变量的副本,而不是x变量本身,虽然副本和本身的值一样,但是存储地址不一样,所以对副本的改变不会影响本身。
2、指针传递:直接将变量x的地址传入,这是func()函数要改写,func(int *a);然后定义一个指针
指向x :int *px = x;此时调用func(px),因为传入的是x的地址,所以此x就是确定的,更改指针所指位置的值,也就更改了x的值
追问
2、指针传递 不太懂哦
追答
这么来说吧,如果有两个变量int x=4;int y=4;那么计算机如何区分这两个值相等的变量呢?所以计算机给两个不同的变量分配了两个不同的地址,地址是唯一的。用值传参只是传的4这个值,而指针传的是变量的地址,函数就会修改地址所在位置变量的值。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询