笨拙的語法

2021-06-22 21:11:34 字數 1695 閱讀 7240

引用和指標

引用和指標引用的行為像乙個const指標解引用乙個有趣的關係式。從而給出如下:

1

2

3

intnvalue = 5;

int*constpnvalue = &nvalue;

int&rnvalue = nvalue;

pnvalue和rnvalue評估同。

作為乙個結果,

下面兩個語句

產生相同的效果:1

2

*pnvalue = 6;

rnvalue = 6;

同樣,乙個const引用的行為就像乙個const指標指向const物件是隱式解引用。

因為引用總是「點」來有效的物件,而不能指出釋放記憶體,引用的是比使用指標安全。如果乙個任務可以通過引用或指標解決,參考一般應首選。指標通常只能用在引用是不充分的情況下(如動態分配的記憶體)。

成員的選擇

通常有乙個指標或引用乙個結構(或類)。正如你已知道的,你可以選擇使用乙個struct的成員選擇運算子成員(。):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

structsomething

;

// member selection using actual struct variable

something ssomething;

ssomething.nvalue = 5;

// member selection using reference to struct

something &rssomething = ssomething;

rssomething.nvalue = 5;

// member selection using pointer to struct

something *pssomething = &ssomething;

(*pssomething).nvalue = 5;

注意指標解引用必須括在括號,因為成員選擇運算子具有比解引用操作符的優先順序更高的。

因為訪問結構和類成員通過指標是笨拙的語法,c + +提供的第二個成員選擇運算子(->)從指標做成員選擇。下面的兩行是等價的:

1

2

(*pssomething).nvalue = 5;

pssomething->nvalue = 5;

笨拙的語法

123 4567 891011 1213 1415 1617 struct something member selection using actual struct variable something ssomething ssomething.nvalue 5 member selectio...

笨拙而詭異的 Oracle

有這樣一段 sql 通過 c 獲取查詢結果 sql 中有兩個引數,且都是字串型別,以上的 c 是生成 oracle sql 所需要的引數。執行結果如下 居然發生這樣的錯誤!苦思冥想外加多次嘗試,均無果!該錯誤的詭異之處在於 phdlevel 的值為 時,執行正常,而為某一狀態值 平衡,欠平衡,過平衡...

笨拙而詭異的 Oracle(之二)

有一張表,很多資料 想取某個月的資料。初始的想法很簡單,根據日期 rq 形成條件即可 符合條件的記錄數是 129835,但耗時太長 14.515 秒 rq欄位是做過索引的 直觀的反應是 oracle 的 to char 函式效率不高!那有沒有其他函式呢?有,找到了乙個 months between ...