C++ 指针--引用--区别、注意事项

引用 vs 指针–面试回答

区别:

  1. 引用是某块内存的别名。指针指向一块内存,它的内容是所指内存的地址;
  2. 不存在空引用。引用必须连接到一块合法的内存。
  3. 引用只能在定义时被初始化一次,之后不可变;指针可变;
  4. 引用必须在创建时被初始化。 指针可以在任何时间被初始化。
  5. 引用不能为空,指针可以为空;

相同点: 都是地址的概念;

指针–引用–使用区别

#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指针执行任何的间接访问操作的后果是不确定的,由编译器决定。

引用

  1. 引用变量是一个别名,即,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
  2. & 读作引用

参考资料:
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

猜你喜欢

转载自blog.csdn.net/xiaoyue_/article/details/105264207