C++指针,函数,引用


C++自学笔记指针:

&————————取地址符

*————————取地址对应的值符

.————————一个类的对象访问该类的属性

->——————— 一个类的指针调用该类的属性

class A
{
public:
    int a = 0;
};
int main()
{
    A b;
    A *p = &b;
    b.a; //类类型的对象访问类的成员
    p->a; //类类型的指针访问类的成员
}

一般创建一个指针时,可以先创建一个空指针,这样指针就有了固定的地址。 如:char *pname = NULL;

有一个class:Phone(手机),该类有一个成员函数SendMessage()用于发短消息,通常你要调用这个函数,

可以先定义一个Phone类的指针*phone,利用这个指针就可以调用该函数了:

  Phone  *phone;

phone->SendMessage();


1.值传递:普通函数(带输入输出参数,变量)在值的传递时,形参不能改变实参的值。
2.地址传递:若传递变量为指针,这种情况下,实参的值会被指针改变。
3.引用函数为地址传递。(引用的实质是指针常量,初始化以后不能改变)
#include 
using namespace std;
void swap01(int a0, int b0) //值传递
{
    int temp = a0;
    a0 = b0;
    b0 = temp;
    cout << "a0=" << a0 << endl;
    cout << "b0=" << b0 << endl;
}

//指针初始化格式:int *p;  p=&a ;
//简写: int *p = a;(*解引用后得到a的值(指向a的地址))

void swap02(int*p1, int*p2)//通过指针,地址传递
{
    int temp = *p1;
    *p1 = *p2;
    *p2 = temp;

}

//引用初始化格式:int &a = b; (a是b地址内容的别名)

void swap03(int &a ,int &b) //通过引用,地址传递
{
    int temp = a;
    a = b;
    b = temp;
}

int main()
{
    int a = 10;
    int b = 20;
    int c = 30;
    int d = 40;
    int e = 50;
    int f = 60;

    swap01(a, b); //值传递,形参的修改不能改变实参的值。
    cout << "a=" << a << endl;
    cout << "b=" << b << endl;

    swap02(&c, &d);  //地址传递,指针改变实参的值。
    cout << "c=" << c << endl;
    cout << "d=" << d << endl;

    swap03(e, f);  //引用传递,引用地址修改实参的值。
    cout << "e=" << e << endl;
    cout << "f=" << f << endl;


    system("pause");
    return 0;
}


 


 

相关