引用 vs 指针–面试回答
★ 区别:
- 引用是某块内存的别名。指针指向一块内存,它的内容是所指内存的地址;
- 不存在空引用。引用必须连接到一块合法的内存。
- 引用只能在定义时被初始化一次,之后不可变;指针可变;
- 引用必须在创建时被初始化。 指针可以在任何时间被初始化。
- 引用不能为空,指针可以为空;
★ 相同点: 都是地址的概念;
指针–引用–使用区别
#include<iostream>
using namespace std; //指针
int main()
{
int a=15;
int *p1;
p1=&a; //note:不可以直接写 *pointer=15;
cout<<*p1<<endl<<a;
return 0;
}
#include<iostream>
using namespace std; //引用
int main ()
{
int a=15;
int& t = a;// 声明引用变量
cout<<t<<endl<<a ; //note:there is t, not &t.
return 0;
}
指针–注意事项
1.指针变量先定义, 且必须进行初始化。未初始化的指针变量不知道指向哪–>出错,maybe死机。
2.指针变量的初始化—只能赋予地址, 决不能赋予任何其它数据,否则将引起错误。在C语言中, 变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址。
- 不允许把一个 数 赋予指针变量,故下面的赋值是错误的: int *p; p=1000;
3.NULL指针就是不指向任何东西的指针,它可以赋值给另一个指针,永远表示这个指针不指向任何值。对于NULL指针执行任何的间接访问操作的后果是不确定的,由编译器决定。
引用
- 引用变量是一个别名,即,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
- & 读作引用
参考资料:
https://www.cnblogs.com/xiaojianliu/articles/8721431.html
https://www.runoob.com/cplusplus/cpp-references.html
https://blog.csdn.net/cy_cai/article/details/52995283