永发信息网

请教问题:什么时候声明指针,什么时候声明普通变量? 什么时候用指针?什么时候用引用?什么时候用普通变量

答案:3  悬赏:70  手机版
解决时间 2021-01-26 12:02
请教个问题:什么时候声明指针,什么时候声明普通变量? 什么时候用指针?什么时候用引用?什么时候用普通变量
最佳答案
首先要明确一点:在C/C++语言中,函数调用时,非指针和非引用参数会被拷贝一份:
class A{public:name}
void f(A a){
cout<<a.name;
}
A aa; <-- 声明一个类A的变量,aa
f(aa)<---调用f时,将aa拷贝一份,在f中的a就是这个拷贝
当sizeof(A)比较大的时候,这个拷贝过程就很费时间。
而且因为是拷贝,f函数中对 a的修改都无法反应到aa的身上。

void f2(A* a){
a->name = "xxx";
}
f2(&aa) <--- 这里用指针,在调用f2时,将变量aa的地址(一个内存地址,正整数)传进去。
在f2中你就得用箭头,而不是“点”了。用指针作为参数,只拷贝指针,不拷贝对象,而在32位计算机上,指针的大小都是32位。所以速度很快。但是,书写箭头很麻烦,于是就有了“引用”

void f3(A& a){
a.name = "xxx"
}
f2(a)
你看,上面的写法可用变量时一样的,但是本质上还是指针。这样兼顾了指针的速度和变量的书写简洁。

那么怎么判断用变量还是指针(引用呢):
如果数据小于32位,并且你不需要修改传进来的变量,那么就用变量。
如果数据大于32位,或者你想修改传进来的变量,那么就用指针或引用。
注意,引用不能为空而指针可以为空,所以,采用指针还是采用引用,就要看你的程序是否允许空指针的存在,如果不允许,就用引用。能不用指针就不用指针,因为空指针非常容易引起错误和崩溃

为了让你可以理解,省略的很多技术细节。部分解释也不完整,建议看书。。
完全原创!!by aztack
全部回答
什么时候声明指针, //要用地址的时候,要声明指针; 什么时候声明普通变量? //在函数要用时声明; 什么时候用指针? //当要引用地址时候就要用指针; 什么时候用引用? //当已经声明函数(已经定义:包括库函数、还有自己定义)、变量时候就要引用; 什么时候用普通变量 //在定义变量后要使用就要用。
比方说传递结构体内容,或者是数组,字符串需要指针变量,其它的字符,数字则一般用普通变量
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
黄冈一品福宾馆地址在什么地方,想过去办事
关于初步可行性研究的内容和目的,下列表述正
赞美汾河的古诗句有哪些?
那种上面印着照片但要倒进开水照片才会显出来
地中海住宿地址在什么地方,我要处理点事
成语好天良夜的意思是什么啊?有知道释义的请
妇女的老年期保健不包括A.定期体格检查B.防治
什么叫做放弃,又该怎样学会放弃?
中药虎皮骨的功效是什么?
Win7系统中windows-system32-drivers-etc中为
河东广场洗浴宾馆地址有知道的么?有点事想过
河虾 产卵 为什么要不断拨动
中国女排在第28届奥运会上,再次荣获阔别20年
金都宾馆(凤城大道)怎么去啊,我要去那办事
新浪微博怎么提高粉丝
推荐资讯
延安市宝塔区司法局地址有知道的么?有点事想
为什么我经常感到孤单呢?不是没有朋友。 我
“12345,有事找政府”。一般地说,下列事情
2011年,某大学举行纪念“辛亥革命100周年”
上海哪里学跆拳道比较好
英语的形容词性和名词性如何区分
两个380V 1210接触器 接两个按钮,求解
olay地址在什么地方,想过去办事
中国联通(五林支局营业厅)怎么去啊,我要去那
我想跑滴滴下什么软件
雅静健康美容馆地址有知道的么?有点事想过去
OAKLEY(翠微广场三层)怎么去啊,我要去那办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?