C++指针和引用

57 阅读1分钟

c++ 的指针和引用一直挺让人头疼。整了一段时间之后,大致理解

指针: 保存变量地址的整数,本身也是一个变量。
引用: 只是一个语法糖,在内存中不存在。

void addNum(int* num){
    (*num)++;
}

void addNum(int& num){
    num++;
}

int main(){
    int c = 10;
    int* ptr1 = &c;//& 是询问 c 的地址。
    int** ptr2 = &ptr1;// ptr2保存ptr1的地址

    **ptr2 = 11;
    cout<< "cur val: "<<c<<endl; //输出 11

    addNum(ptr1);
    cout<< "cur val: "<<c<<endl; //输出 12

    addNum(*ptr2);
    cout<< "cur val: "<<c<<endl; //输出 13

    int& ref = c;
    addNum(ref);
    cout<< "cur val: "<<c<<endl; //输出 14

    return 0;
}

可以看到&简化了指针的使用,而指针只是一个语法糖,作为指针的拓展而已