您好,登錄后才能下訂單哦!
1,數(shù)組指針語法梳理
回顧,如何定義數(shù)組數(shù)據(jù)類型:
回顧,如何定義指針類型數(shù)組:
回顧,如何直接定義 一個指向數(shù)組類型的指針:
2,函數(shù)指針語法梳理
1)如何定義一個函數(shù)類型
2)如何定義一個函數(shù)指針類型
3)如何定義一個函數(shù)指針(指向一個函數(shù)的入口地址)
【中級程序員 轉(zhuǎn) 高級程序員的 必經(jīng)之路】
1,函數(shù)類型做函數(shù)的參數(shù)
把函數(shù)的入口地址傳過來,奇怪的效果:【多態(tài)就是這樣】
函數(shù)指針 做 函數(shù)參數(shù) 思想剖析
1,數(shù)組指針語法梳理
回顧,如何定義數(shù)組數(shù)據(jù)類型:
chunli@http://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream> using namespace std; int main() { typedef int (arr) [5]; //定義一種數(shù)據(jù)類型 arr myarr; //用數(shù)據(jù)類型,定義變量 myarr[3] = 10; //使用 cout << myarr[3] << endl; int a[5]; //等同于這樣寫 return 0; } chunli@http://990487026.blog.51cto.com~/c++$ g++ -g -o run main.cpp && ./run 10 chunli@http://990487026.blog.51cto.com~/c++$
回顧,如何定義指針類型數(shù)組:
chunli@http://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream> using namespace std; int main() { typedef int (*arr) [10]; //定義一種數(shù)據(jù)類型 arr my_arr; //用數(shù)據(jù)類型申明一個變量 int a[10]; //常規(guī)的數(shù)組 my_arr = &a; //區(qū)地址給我 (*my_arr)[0] = 9999; cout << *((*my_arr) +0) << endl; return 0; } chunli@http://990487026.blog.51cto.com~/c++$ g++ -g -o run main.cpp && ./run 9999 chunli@http://990487026.blog.51cto.com~/c++$
回顧,如何直接定義 一個指向數(shù)組類型的指針:
chunli@http://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream> using namespace std; int main() { int arr[10]; int (*p)[10]; p = &arr; (*p)[2] = 10; cout << *(*(p) + 2)<< endl; return 0; } chunli@http://990487026.blog.51cto.com~/c++$ g++ -g -o run main.cpp && ./run 10 chunli@http://990487026.blog.51cto.com~/c++$
2,函數(shù)指針語法梳理
1)如何定義一個函數(shù)類型
2)如何定義一個函數(shù)指針類型
3)如何定義一個函數(shù)指針(指向一個函數(shù)的入口地址)
1,函數(shù)的基本調(diào)用:
chunli@http://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream> using namespace std; int add(int a,int b) { return a + b; } int main() { int sum = add(1,2); //函數(shù)名,就是函數(shù)的入口地址 cout << sum <<endl; return 0; } chunli@http://990487026.blog.51cto.com~/c++$ g++ -g -o run main.cpp && ./run 3 chunli@http://990487026.blog.51cto.com~/c++$
1)如何定義一個函數(shù)類型
使用函數(shù)指針,間接調(diào)用函數(shù)
chunli@http://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream> using namespace std; int add(int a,int b) { return a + b; } int main() { typedef int (fun)(int a,int b); //定義一種fun的函數(shù)類型 fun *p = NULL; //定義一個變量 p = &add; //把返回值,參數(shù)類型完全一樣的函數(shù)地址,給我 p = add; //這樣寫,兼容C歷史 int sum = p(1,6); cout << sum <<endl; return 0; } chunli@http://990487026.blog.51cto.com~/c++$ g++ -g -o run main.cpp && ./run 7 chunli@http://990487026.blog.51cto.com~/c++$
2)如何定義一個函數(shù)指針類型
chunli@http://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream> using namespace std; int add(int a,int b) { return a + b; } int main() { typedef int (*fun)(int a,int b);//定義一種fun的函數(shù)類型 fun p = NULL; //定義一個變量 p = add; //這樣寫,兼容C歷史 int sum = p(1,6); cout << sum <<endl; return 0; } chunli@http://990487026.blog.51cto.com~/c++$ g++ -g -o run main.cpp && ./run 7 chunli@http://990487026.blog.51cto.com~/c++$
3)如何定義一個函數(shù)指針(指向一個函數(shù)的入口地址)
chunli@http://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream> using namespace std; int add(int a,int b) { return a + b; } int main() { int (*fun)(int a,int b); //定義一個變量 fun = add; int sum = fun(1,6); cout << sum <<endl; return 0; } chunli@http://990487026.blog.51cto.com~/c++$ g++ -g -o run main.cpp && ./run 7 chunli@http://990487026.blog.51cto.com~/c++$
【中級程序員 轉(zhuǎn) 高級程序員的 必經(jīng)之路】
1,函數(shù)類型做函數(shù)的參數(shù)
準(zhǔn)備:
chunli@http://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream> using namespace std; typedef int (*fun)(int a,int b); //定義一種數(shù)據(jù)類型 int add(int a,int b) { return a + b; } int main() { fun f = NULL; //使用數(shù)據(jù)類型,定義一個變量 f = &add; //給變變量賦值 cout << f(1,2) << endl; return 0; } chunli@http://990487026.blog.51cto.com~/c++$ g++ -g -o run main.cpp && ./run 3 chunli@http://990487026.blog.51cto.com~/c++$
chunli@http://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream> using namespace std; typedef int (*fun)(int a,int b); //定義一種數(shù)據(jù)類型 int add(int a,int b) { return a + b; } //下面的這兩種方式的是一樣的 int chunli_1(fun f) { return f(3,5); } int chunli_2( int (*fun)(int a,int b)) { return fun(2,3); } int main() { cout << chunli_1(add)<< endl; cout << chunli_2(add)<< endl; return 0; } chunli@http://990487026.blog.51cto.com~/c++$ !g g++ -g -o run main.cpp && ./run 8 5 chunli@http://990487026.blog.51cto.com~/c++$
把函數(shù)的入口地址傳過來,奇怪的效果:【多態(tài)就是這樣】
chunli@http://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream> using namespace std; typedef int (*fun)(int a,int b); //定義一種數(shù)據(jù)類型 int add1(int a,int b) { cout << "add1 函數(shù)被調(diào)用 \n"; return a + b; } int add2(int a,int b) { cout << "add2 函數(shù)被調(diào)用 \n"; return a + b; } int add3(int a,int b) { cout << "add3 函數(shù)被調(diào)用\n"; return a + b; } int add4(int a,int b) { cout << "add4 函數(shù)被調(diào)用\n"; return a + b; } //下面的這兩種方式的是一樣的 int chunli_1(fun f) { return f(3,5); } int chunli_2( int (*fun)(int a,int b)) { return fun(2,3); } int main() { cout << chunli_1(add1)<< endl; cout << chunli_2(add2)<< endl; cout << chunli_2(add3)<< endl; cout << chunli_2(add4)<< endl; return 0; } chunli@http://990487026.blog.51cto.com~/c++$ g++ -g -o run main.cpp && ./run add1 函數(shù)被調(diào)用 8 add2 函數(shù)被調(diào)用 5 add3 函數(shù)被調(diào)用 5 add4 函數(shù)被調(diào)用 5 chunli@http://990487026.blog.51cto.com~/c++$
函數(shù)指針 做 函數(shù)參數(shù) 思想剖析
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。