重拾C (一) 引用高階

2021-07-09 10:23:59 字數 1479 閱讀 9030

int ( *z ( int x, int(*y) (int) ) ) ( int )
這道題可以先將外圍的函式指標提取出來,即如下:

y = int(*y)(int)
這樣總體便可以化簡為如下形式:

y z(int x , y)
why說:無論是遇到什麼看起來很複雜的題目或問題,首先應該做的就是不要慌,本人就有這個很大的毛病,考研數學最大的失利就是面對一些看起來很難的數學題慌了手腳,無所適從,一些可以做出來的題目反而做不出來,所以,無論以後面對任何事情,乙個穩定的心態是很重要的,無論多著急的事情,首先穩穩自己的心神,再開始處理,總是不會錯的。

一維陣列的引用

void main()

; int(&ra)[10](a); //引用就是給原來的變數乙個別名,使用的是同乙個位址。

int i = 0;

for (auto data : ra) //c++11的迴圈

std::cout

<< a << ra << std::endl;

std::cout

<< &a << &ra << std::endl;

system("pause");

}

why說:一維陣列的引用是最基本的引用,基本格式需要背下。這裡的引用就是給原來的變數設定了乙個別名,還是同乙個位址,只不過是名字變化了而已,這裡需要注意的是c++11特有的迴圈結構,個人覺著有點和python中的for迴圈類似,不過這種特有的適用條件還是比較嚴格的,需要和傳統的for迴圈相區別。

2.多維陣列的引用

void main()

; int(&ra)[2][5](a); //引用就是給原來的變數乙個別名,使用的是同乙個位址。

for (int i = 0; i < 2; i++)

std::cout

<< "\n";

}std::cout

<< a <<" "

<< ra << std::endl;

std::cout

<< &a << " "

<< &ra << std::endl;

system("pause");

}

why說:多維陣列和一維陣列其實差不了多少,格式也沒什麼區別,只不過需要嚴格注意格式即可。

3.函式指標的引用

int add(int a, int b)

int reduce(int a, int b)

void main()

why說:首先建立乙個函式指標,然後建立乙個函式指標的引用,再講引用初始化為減函式,此時,原函式指標也跟著做出了改變,即引用變化,原函式指標也會跟著進行一定的變化。

後記:寫技術部落格真的感覺有點累,確實不是一件容易事,看看自己能不能堅持下來吧。。。。

C 學習(三) 引用

為了說明c 中引用這個概念引入的意義,我們不妨從乙個最基礎的c語言交換兩個變數的值的函式說起 swap int a,int b 呼叫時,使用如下語句 swap a,b 這裡,傳遞的是變數a和b的位址,我們要交換a和b的值,函式卻用的是a和b的位址作為引數,感覺沒有那麼直觀形象。c 引入了 引用 這個...

C 筆記1引用

include 標準命名空間 包含很多標準定義 using namespace std const double pi 3.14 圓class mycircle 獲取圓的面積 double gets void main 引用 void main 指標交換值 void swap1 int a,int ...

C 基礎(05) 引用

1 引用就是給變數起乙個別名。其本質就是乙個指標常量 指標指向的位址不可以修改 int a 10 b 是a的別名。b和a所訪問的記憶體是相同的 int b a 2 注意事項 3 引用作為函式的引數 1 函式的引數傳遞可以為 值傳遞 位址傳遞 引用傳遞。其中值傳遞不會改變原來的變數內容,其相當於將原來...