C++primer第二章

  • 1.引用

引用就是一个绑定,程序把引用和它的初始值绑定在一起。引用只能绑定在对象上,不能和值绑定在一起。

   int a=11;
   int &b=a;
   a=1111;
   int &c=b;
   cout<<b<<endl<<c;
    return 0;

此处b的输出值为1111,b指向a,是a的另外一个名字。c绑定到b绑定的对象上,也就是绑定到a上,c的输出值也为1111.

所谓引用:它只是为存在的对象所起的另外一个名字。它不是一个对象,没有实际的地址 。如

int &My_value = 10; 

错误,&my_value没有地址,怎么可以赋值。 

  • 2.指针

指针也是一个引用,相比于引用的不同点:

1.指针本身也是一个对象,可以对其赋值和拷贝

2.指针可以不用初始化(最好不要不用初始化),和其他的内置类型一样。

指针存放着某个对象的地址,获取地址用取地址符。如 int *p=&a;

指针和它指向的对象的类型要严格匹配。

 利用指针访问对象,用到解引用符*,用法:int*p=&a;cout<<*p;

注:*和&的多重含义:(非常重要!!!)

int &a=b;//&紧随类型名出现则表示引用
p=&a//&出现在表达式中表示取地址
int *p//*紧随类型名出现表示一个指针
*p=i//*出现在表达式中,是一个解引用符

所有的指针最好都初始化,生成空指针的方法:

int *p=nullptr//生成空指针的方法
或
int *p=0//要声明头文件
  • 习题2.18
    int a=8,b=2;
    int *p=&a,*q=&b;
    cout<<p<<endl<<*p<<endl;
    p=&b;//&紧随类型名出现则表示引用
    cout<<p<<endl<<*p<<endl;
    *p=b;//加不加一样,p=&b中改变了p的值,所以也改变了*p的值
    cout<<p<<endl<<*p<<endl;

猜你喜欢

转载自blog.csdn.net/qq_29277165/article/details/81115487