永发信息网

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

答案:3  悬赏:70  手机版
解决时间 2021-01-26 12:02
  • 提问者网友:我是我
  • 2021-01-25 16:06
请教个问题:什么时候声明指针,什么时候声明普通变量? 什么时候用指针?什么时候用引用?什么时候用普通变量
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-01-25 16:48
首先要明确一点:在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
全部回答
  • 1楼网友:平生事
  • 2021-01-25 19:05
什么时候声明指针, //要用地址的时候,要声明指针; 什么时候声明普通变量? //在函数要用时声明; 什么时候用指针? //当要引用地址时候就要用指针; 什么时候用引用? //当已经声明函数(已经定义:包括库函数、还有自己定义)、变量时候就要引用; 什么时候用普通变量 //在定义变量后要使用就要用。
  • 2楼网友:蓝房子
  • 2021-01-25 17:25
比方说传递结构体内容,或者是数组,字符串需要指针变量,其它的字符,数字则一般用普通变量
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯