C++引用与C语言中的指针

引用(reference)为对象起了另外一个名字(引用即别名)

1 由于无法令引用重新绑定到另一个对象 ,所以引用必须初始化。

2 引用并非对象,相反它只是一个已经存在的对象起的另外的名字。

eg:int i=0;

       int&ri=i;

      ri=3;

      std::cout<<i<<"      "<<ri<<std::endl;

   输出 :3      3

指针(pointer)(其实就是地址变量)

1 指针是一个对象,允许对指针赋值和拷贝。

2 指针无需在定义时赋初值。

3 和其他内置类型一样,在块作用域内定义的指针如果没有初始化,也将拥有不确定的值。

eg:#include<stdio.h>
/*typedef int* ElemType;
int fun(ElemType a)
{
*a=3;
return 0;
 } 
 int main()
 {
  ElemType b;
  fun(b);
  return 0;//地址不能乱用 

 }*/

运行:这是一个严重的错误,因为指针变量b没有赋确定的值,且又试图修改所指内容。

C++引用与C语言中的指针

正确的应为:

#include<stdio.h>
typedef int* ElemType;
int fun(ElemType a)
{
*a=3;
return 0;
 } 
 int main()
 {
  int a=3;
  ElemType b=&a;//指针最好赋确定的值
  fun(b);
  printf("%d",a);
  return 0;//地址不能乱用 
 }