zoukankan      html  css  js  c++  java
  • 【C++自我精讲】基础系列一 指针与引用

    【C++自我精讲】基础系列一 指针与引用
    0 前言

    指针、引用、指针与引用区别。

    1 指针

    变量:代码中常常通过定义变量来申请并命名存储空间,并通过变量的名字来使用这段存储空间。

    //变量
    int nNum;    //声明名字为nNum的int型存储空间
    nNum = 100;  //nNum存储值100
    nNum = 200;  //改变nNum存储值200

     指针:又叫一级指针,用来指示一个内存地址的变量。对于一个类型T(int、char、folat...),T*就是指向T的指针类型,一个T*类型的变量保存了一个T对象的地址。

    //指针
    int *pNum;   //定义指针pNum
    pNum = &nNum;//pNum指向变量nNum在内存中的地址,而不是变量本身的值200(取地址运算符&:取变量的地址。如:&nNum为取变量nNum的地址)
    int nNum1 = *pNum; //取指针pNum指向存储空间值200(指针运算符*:从地址中取数据。如:*pNum为从地址pNum中取值)

     指针变量:指针是地址,指针变量是存放地址的变量。

    //指针变量
    int *pVar = pNum;//等同int *pVar = &nNum;

    二级指针:指向指针变量的指针。

    //二级指针
    int **ppNum = pVar;//

     用一张图表示下二级指针:

     

    C是常量;B是一级指针,B的值(即C的地址)是一级指针数据;A是二级指针,A的值(即B的地址)是二级指针数据。

    空指针:不指向任何对象,指针变量值为NULL。指针为空的判断常常为了避免指针变量的非法使用。

    int *pNum = NULL;
    ...
    if(NULL != pNum)
    {
        ...
    }

     函数指针:是指向函数的指针变量。可用该指针变量调用函数,就如同用指针变量引用其他类型变量一样。

     函数指针声明格式:类型说明符 (*函数名)(参数)  

    //函数min
    int min(int x,int y);
    //函数max
    int max(int x,int y);
    //函数指针
    int (*pFun)(int, int);
    
    //使用函数指针调用函数
    int nNumMin = 1;
    int nNumMax = 100;
    int nMin = 0;
    int nMax = 0;
    pFun = min;
    nMin = (*pFun)(nNumMin,nNumMax);//nMin = 1;
    pFun = max;
    nMax = (*pFun)(nNumMin,nNumMax);//nMax = 100;

    指针函数:函数的返回值类型是一个指针类型,本质是一个函数。

    指针函数声明格式:类型说明符 *函数名(参数)  或 类型说明符 *(函数名(参数))

    int *pfun(int, int);//pfun是一个指向返回值为int的函数的指针
    2 引用

    引用:是对象的别名,对引用的操作与对变量的直接操作一样。其主要用于函数参数和返回值类型,T&表示T类型的引用。引用不是数据类型,引用本身不占存储空间。

    int i = 100;
    int &j = i;//&为标识作用,非取地址
    3 指针与引用区别

    1)指针可以指向空值,引用不能。如果一个变量指向另一个对象,它可能为空,应该用指针;它不允许为空,应该使用引用。

    2)指针可以改变指向,引用不可以改变指向。引用初始化以后不能被改变,指针可以改变所指的对象。

    3)指针的大小是固定字节(4个字节),引用的大小是所指变量的大小。

  • 相关阅读:
    118/119. Pascal's Triangle/II
    160. Intersection of Two Linked Lists
    168. Excel Sheet Column Title
    167. Two Sum II
    172. Factorial Trailing Zeroes
    169. Majority Element
    189. Rotate Array
    202. Happy Number
    204. Count Primes
    MVC之Model元数据
  • 原文地址:https://www.cnblogs.com/joinclear/p/3097985.html
Copyright © 2011-2022 走看看