演算法筆記 心得6

2022-06-10 16:51:10 字數 2653 閱讀 5176

1,指標

表示記憶體位址(指標指向了記憶體位址)

如果這個記憶體位址恰好是某個變數的位址,俺麼又稱「這個指標指向該變數」

只要在變數前面加上&,就表示變數的位址

2,指標變數

指標變數用來存放指標(位址)

⚠️:一般把星號放在資料型別之後(c++程式設計師),星號是型別的一部分。

給指標變數賦值的方式一般是把變數的位址取出來,然後賦給對應型別的指標變數。

eg,int a;

int* p=&a;

p儲存的是位址,*p是這個位址存放的元素;

指標變數支援自增和自減操作,對於int*型別的指標變數p來說,p+1是指p所指的int變數的下乙個int型別變數位址;

對於指標變數,把其儲存的位址型別稱為基型別,例如定義為int* p的指標變數,int就是它的基型別。

⚠️:基型別必須和指標變數儲存的位址型別相同,也就是上面定義的指標變數p不能存放double或char型別資料的位址,而必須是int型別資料的位址。

3,指標與陣列

陣列名可以作為陣列的首位址使用

eg,int a[10]=;

int* p=a;

a作為陣列a的首位址&a[0]而被賦值給指標變數p 

由於指標變數可以進行加減法,即a+i等同於&a[i];

如果想要訪問其中的元素a[i],需要加上星號,使其變成*(a+i)後才和a[i]等價

輸入陣列元素的新穎寫法:

scanf(「%d」,a+i);

兩個int型別的指標相減,等價於在求兩個指標之間相差了幾個int

4,使用指標變數作為函式引數

這時視為把變數的位址傳入函式,如果在函式中對這個位址的元素進行改變,原先的資料就會確實地改變

在上述**中,把int型的指標變數p賦值為a的位址,然後通過change函式把指標變數作為引數傳入,此時傳入的其實是a的位址,在change函式中,使用*p修改位址中存放的資料,也就是改變了a本身,當最後輸入a時,就已經是改變了的值,這種傳遞方式被稱為位址傳遞。

⚠️:函式在接收引數的過程中是單向一次性的值傳遞。

只有在獲取位址的情況下對元素進行操作,才能真正地修改變數。

5,引用

引用不產生副本,而是給變數起了別名。

對引用變數的操作就是對原變數的操作。

引用只需要在函式的引數型別後面加上&就可以了。(一般寫在變數名的前面)

區分:引用:

1,在等號左邊

2,與型別在一起

3,定義的時候必須初始化

4,&後面跟的別名是新名字,之前不存在

1,在等號右邊

2,與變數在一起

3,&後面跟的變數,已經存在

eg,int a=3;

int &b=a;    //引用

int* p=&a;  //取位址

指標變數其實是unsigned型別的整數,因此為了理解方便,可以「簡單」地把*int型別理解為unsigned int型別,而直接交換這樣的兩個整型變數是需要加引用的

6,結構體的使用

結構體的定義:

格式struct name;

eg,struct studentinfoalice,bob,stu[1000];

結構體變數和結構體陣列,也可以按照基本陣列型別(如int型)那樣定義

studentinfo alice;

studentinfo stu[1000];

結構體裡面定義出了自身(這樣會引起迴圈定義的問題)之外的任何資料型別,雖然不能定義自身,但是可以定義自身型別的指標變數

eg,struct node;

7,訪問結構體內的元素

「.」操作和」->」操作

eg,struct studentinfostu,*p;

訪問stu中變數的寫法如下:

stu.id

stu.name

stu.next

訪問指標變數p中元素的寫法如下:

(*p).id

(*p).name

(*p).next

c語言中又有一種訪問結構體指標變數內元素的更簡潔的寫法:

p->id

p->name

p->next

也可以對結構體變數進行賦值:

stu.id = 10086;

int getid =stu.id;

建構函式是用來初始化結構體的一種函式,它直接定義在結構體中。

乙個特點是它不需要寫返回型別,且函式名與結構體名相同。

對乙個普通定義的結構體,其內部會生成乙個預設的建構函式(但不可見)

struct studentinfo 

};如果想要手動初始化引數,只需要提供初始化引數來對結構體內的變數進行賦值即可。

struct studentinfo

};建構函式也可以簡化為一行;

struct studentinfo

};這樣可以在需要時直接對結構體變數進行賦值:

studentinfo stu= studentinfo(10086,」m」);

⚠️:如果自己重新定義了建構函式,則不能不經初始化就定義結構體變數(也就是預設的生成的建構函式 studentinfo() 已經被覆蓋了)

為了既能記不初始化就定義結構體變數,又能享受初始化帶來的便捷,可以吧」studentinfo(){}」手動加上

只要引數格式和型別不完全相同,就可以定義任意多個建構函式。

演算法筆記 心得6

1,指標 表示記憶體位址 指標指向了記憶體位址 如果這個記憶體位址恰好是某個變數的位址,那麼又稱 這個指標指向該變數 只要在變數前面加上 就表示變數的位址 2,指標變數 指標變數用來存放指標 位址 一般把星號放在資料型別之後 c 程式設計師 星號是型別的一部分。給指標變數賦值的方式一般是把變數的位址...

心得筆記 6

設定server 2008中isapi and cgi restrictions的方法 手動 1 iis manager 開 2 左側 viewer 名 ace ace administrator 3 右側 viewer iis isapi and cgi restrictions 4 表示 asp...

演算法筆記 心得2

1 轉義字元 n 代表換行 0 代表空字元null,其ascii碼為0 2 強制型別轉換 新型別名 變數 乙個型別賦值給另乙個型別,卻沒有寫強制型別轉換,編譯器會自動進行轉換。如果在計算過程中,需要轉換型別,就必須要寫強制型別轉換,因為不寫的話,就是算完才賦值。3 符號常量 替換 巨集定義 巨集替換...