hans

hans

【C++】C++ 一些基礎小技巧


前言#

記錄一下小 tips,方便查閱和鞏固基礎知識。

1. 引用 &,指針 *,取地址符 &#

引用 & 是 C++ 的新概念。

取地址符 & 是得到某一變量的地址信息。

指針指向一塊內存,它的內容是所指內存的地址。引用是某塊內存的別名。

引用必須在定義時被初始化,而且只能初始化一次,之後不可變。指針可變。

引用不能為空,指針可以為空。

以下是 “值傳遞” 示例程序。由於 Func1 函數體內的 x 是外部變量 n 的一份拷貝,改變 x 的值不會影響 n,所以 n 的值仍然是 0。

void Func1(int x)
{
    x = x+10;
}
int n = 0;
Func1(n);
cout << "n=" << n << endl;
//輸出n = 0

以下是 “指針傳遞” 的示例程序。由於 Func2 函數體內的 x 是指向外部變量 n 的指針,改變該指針的內容將導致 n 的值改變,所以 n 的值成為 10。

void Func2(int* x)
{
    (*x) = (*x) + 10; // *作用是去指針(解引用),x本身表示n的地址信息。
}
int n = 0;
Func2(&n);//這裡&是取地址符
cout<<"n="<<n<<endl;
//輸出n=10

以下是 “引用傳遞” 的示例程序。由於 Func3 函數體內的 x 是外部變量 n 的引用,x 和 n 是同一個東西,改變 x 等於改變 n,所以 n 的值成為 10。

void Func3(int &x)
{
    x = x+10;
}
int n = 0;
Func3(n);
cout<<"n="<<n<<endl;
//輸出n=10

指針可以被重新賦值以指向另一個不同的對象。引用總是指向在初始化時被指定的對象。

string s1("Nancy");
string s2("Clancy");

string& rs = s1; // rs引用s1
string *ps = &s1; // ps 指向s1

rs = s2; // rs仍舊引用s1,但是s1的值現在是“Clancy”
ps = &s2; // ps 現在指向s2

2. 箭頭(->)和點號(.)操作符#

對於一個結構或者類,如果定義其對象的時候是指針,就要用 "->" 指向類成員或者結構元素。

當定義一般對象的時候就要用 "." 指向類成員或者結構元素。

對於結構:

struct MyStruct
{
    int menber_a;
};

MyStruct s;
s.member_a = 1;

MtStruct *ps;
(*ps).member_a = 1;
ps->member_a = 2;

對於類:

class A
{
    public
    play();
}

A *p;
p->play();

A p;
p.play();

2. 位運算符 & | <<>> ^ ~ %#

http://blog.csdn.net/fox64194167/article/details/20692645

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。