永发信息网

形参中&和*的区别

答案:6  悬赏:0  手机版
解决时间 2021-11-16 06:26
形参中&和*的区别
最佳答案
看看这个说法对不对:

如果是定义的形参,那么*前面应该加上类型名,因为C++是强类型语言。
而p就是形参的参数名。

而&q这种格式比较明显的看出这是一个实参,因为&的左边没有类型说明符,表示这个函数在声明(定义原型)的时候已经确定了这第二个参数的类型。

如果以int为例,那么这个函数原型可以这么写:

void fun(int * p,int &q);
其中,p和q都没有任何的意义。

改进意见:
可以写成模板:
template
void fun(T *,T &);
这样的声明就可以很好的区别出*和&了
如果是*则表示这个函数的第一个参数是一个“指针”,这个指针是一个int本身类型的指针,原则上应该指向句柄类型为int的句柄。(这段话太准确了一点,注意理解指针类型和指针指向类型的区别)
如果是&则表示第二个参数是一个引用。如果说A引用B,就是说A把B这个实体都全部拿了过来,而不是只拿了一个写了B名字的纸条啊什么的。这里的引用表示这个函数将把传到第二个参数位置的这个对象(或者说变量)完全收到函数内进行处理,也就是说这个函数对于第二个参数(实例句柄)的处理是完全在这个参数的本身身体上进行的。

——————————————————————

bigglave,jdzfjfhnui都说到了很正确的一部分
w_7849516230说得不很自信,而且不很清楚,只需要稍加改进,就可以完全正确了。

&这个符号在执行语句中是取地址符;在定义变量(包括声明形参)的时候我们对他的理解就应该是:一个T类型的变量句柄的引用(实体)。
全部回答
*P,实际是一个内存单元的地址
&q,实际是地址为q的内存单元里的值
*p 指的试p里含的值的“地址” &q 指的是q(这里q里含的是个地址)地址处所含的值。 一个是值 一个试地址。
指针传递的是地址
引用传递的是同一个变量的另一个名字,公用同一个内存单元
相比引用更直接易用
*p这个是指针变量,传的时候是相当于赋值比如有个*str=*p,那么str的这个指针里面存的是和p指针里存的是一样的地址值,但是是两个不同的地址空间!还有另一个值,是他们地址所指向的地方
&q直接传的是地址!还是*str=&q这个意思就是直接把地址赋值过去了!指针存的是p的地址了,总共只有两个地址空间!
&这个是取地址符么!
void fun(*p,&q)

指针的形参,实参 传地址 &a
引用的形参 ,实参传本身 a
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何把扫描的两个Word文档放在一个文档中
美的空气能热水器是不是即开即热行的
Powered by Tengine 什么意思
空放贷款犯法吗
福建福州5强两比土建考试的消息
我觉得我挺漂亮 怎么别人说我丑
日本人是不是喜欢战争?
玩魔方和智商有关系吗?
本田飞度没电怎么打开车门
遇到流芒我想杀咯他,怎么办
虐杀原形2结局后为什么找不到指挥官吸收了?
soso街景地图360是怎样做出来的
0.666化成分数是什么?
深切留恋叫眷恋,亲眼所见叫什么,长久分别叫
我妈妈49岁了.为什么你有时候说这.她又说那?
推荐资讯
公大象和母大象是怎么交配的
海竿铅坠沉下去会不会钓不到鱼
猫粮可以拿点水泡着吃吗
c罗新女友全裸写真的是谁
美菱冰箱216E3BN出现EC是什么故障
78.92-(8.92+7.3)简算
塑料桶投球是怎样骗人
用连续平整度仪测定某一级公路沥青混凝土面层
亲们,照样子写词语,例:动静,这道怎么做,
酒糟怎么发酵
卫生间,厨房墙面还要做拉毛处理吗
是 香港本地银行账户好用 还是 国内离
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?