zoukankan      html  css  js  c++  java
  • C++之引用和指针

    作者:tongqingliu
    转载请注明出处:http://www.cnblogs.com/liutongqing/p/7050431.html

    C++之引用和指针

    C++引用

    引用的基本用法:

    int a = 12;
    int &b = a; // b指向a,b是a的引用,b是a的别名
    

    下面看一个实例:

    #include<iostream>
    #include<vector>
    using namespace std;
    int main()
    {
    	int val = 123;
    	int &refval = val; //refval是val的别名
    
    	cout << "val=" << val << endl;
    	cout << "refval=" << refval << endl;
    
    	refval = 0;
    	cout << "val=" << val << endl;
    	cout << "refval=" << refval << endl;
    
    	system("pause");
    }
    

    程序输出:

    val=123
    refval=123
    val=0
    refval=0
    请按任意键继续. . .
    

    引用其实就是给对象起一个别名,比如张明的别名是小明,那么你打张明和打小明都是一个意思,打的都是同一个人。
    但是有几点需要注意:

    • 引用必须初始化,int &val;错。
    • 引用类型的初始值必须是一个对象,而不能是个数int &val = 1;错。
    • 引用和引用的对象必须同一类型,double a = 1.2; int &val = a;错。
    • 引用不是对象,不能定义引用的引用,int a = 1; int b = 2; int &c = a; int &c = b;错。

    指针

    和引用一样,指针可以间接访问其他对象。
    指针的特点:

    • 指针本身就是一个对象,可以赋值也可以拷贝,也可以先后指向不同的对象。
    • 指针在定义时可以不赋值。

    指针的基本用法;

    int *ip1, *ip2;//声明指针,ip1和ip2都是指向int型对象的指针
    double dp, *dp2;//dp是double型对象,dp2是指向double型对象的指针
    int ival = 32;
    int *p = &ival;//p是指向变量ival的指针,p存放变量ival的地址
    

    上面最后一行,p存放变量ival的地址,*p表示ival的值(*是解引用符),&ival表示取ival的地址。

    #include<iostream>
    using namespace std;
    int main()
    {
    	int val = 123;
    	int *pval = &val;
    	cout << "val=" << val << endl;
    	cout << "pval=" << pval << endl;
    	cout << "&val=" << &val << endl;
    	cout << "*pval=" << *pval << endl;
    
    	system("pause");
    }
    

    程序运行结果:

    val=123
    pval=00A2FBE0
    &val=00A2FBE0
    *pval=123
    请按任意键继续. . .
    
    • 引用不是对象,没有实际地址,不能定义指向引用的指针。
    • 指针类型必须和所指向对象的类型一样。

    参考:
    C++ primer 第五版

  • 相关阅读:
    双显示器或更多个显示器,能分别设置不同的壁纸吗?
    二叉排序树
    如何将一棵树转化为对应的二叉树
    【例2.1】使用成员函数的实例
    [例1.10]使用setw设置输出宽度的例子
    python学习(三)-面向对象
    git 笔记
    python学习笔记(二)
    python基础语法
    fiddler
  • 原文地址:https://www.cnblogs.com/liutongqing/p/7050431.html
Copyright © 2011-2022 走看看