困擾我的c 語法

2022-03-21 02:12:51 字數 1633 閱讀 5932

以下是我上週學習c++ primer的心得:

c++允許將變數定義成陣列的引用,以下列**為例。形參為int (&arr)[10],該引數需分成兩部分說明,引用名和

引用定義。

引用名arr和&結合,表示其是乙個引用

和下標運算子結合,表示其是乙個陣列的引用

和int結合,表示其是乙個int型陣列的引用

值得注意的是,括號是必不可少的,否則形參就會變成乙個整型引用陣列

void print( int (&arr)[10] ) 

我們知道如何宣告並初始化乙個指向陣列的指標:

int a[10];

int (*p)[10];

p = a;

但是如何去宣告乙個返回陣列指標的函式呢,形式如下:

type ( *function(parameter_list) )[dimension]

type表示陣列元素的型別,dimension是返回陣列的維數

例項:int ( *func(int i) ) [10];

函式名和形參是func(int i)

和 * 結合表示函式返回乙個指標型別

和下標運算子結合表示其是指向陣列的指標

和int結合表示其返回乙個指向int型陣列的指標

定義乙個返回陣列指標的函式:

#include using std::cin;

using std::cout;

using std::endl;

int odd = ;

int even = ;

int (*arrptr( int i ))[5]

int main(void)

int func(void) const 類似這種將const放在形參列表之後的函式被稱為const成員函式。

在說明const成員函式之前,我們要先說說this指標。

每個成員函式都包含乙個隱式引數this,this指向該函式所對應的物件,預設的this指標的型別是乙個常量指標(頂層const)並且指向非常量物件。無論我們使用諸如this.func()或者obj.func()(obj是具體的物件名),編譯器都會將

obj的位址傳遞給func的隱式引數this。但是由於this是乙個指向非常量物件的指標,所以我們不能使用this去繫結乙個常量物件。類似的,常量物件也不能呼叫普通的成員函式。舉個栗子,

class fooclass ; 

}int main(void)

在編譯a.foo()時,編譯器使用a的位址去初始化foo的隱式引數this,但是,這裡的this指向的是乙個非常量物件,所以無法繫結到物件a上去,因此 a.foo(); 是一條非法語句。只要將this轉換成const fooclass *const 型別就可以實現本次呼叫。通過將函式foo宣告為乙個const成員函式就可以實現這一點。修改**如下:

class fooclass ; 

}int main(void)

值得注意的是,const成員函式不能修改物件內的成員變數。

c++ primer 5th edition

困擾我的isset empty函式

在學習php有一段時間之後,感覺自己的基礎知識還是有點不牢固,有的問題就不怎麼知道,比如就有乙個,在判斷乙個變數是否為空的情況下,我就不知道是用isset 還是empty 今天我就來分析該用哪個函式。isset 用於判斷乙個函式是否被設定過,如果設定過就為true,否則就為false,但是有乙個例外...

一直困擾我的問題

當解決乙個問題的時候,隨即引出幾個未知的問題。然後在解決那幾個問題時又引出更多的問題。導致問題就像一棵樹一樣,不斷往上生長。逐漸遠離最開始的問題。當然也在一層一層未解決的問題的影響下挫敗感越來越強烈。最後不得不停止 放棄。發現解決方法一 當在解決乙個不知道難度有多大的問題時,找一張紙,把最根本的要解...

對於C 學習的困擾

在使用c 寫web程式時,總是碰到乙個很鬱悶的事情,想要把乙個按鈕的click事件內的 重新修改一下,但是又想保留原來事件中的 把原來的 注釋後,又把 重新複製一遍,貼上在cs檔案中,就提示aspx中的空間沒有相應的事件,很鬱悶,對於除錯簡直就是快瘋了。每次都需要從aspx中雙擊按鈕,然後自動進入c...