1, array pointer syntax grooming
Review how the array data types are defined:
Review, how to define an array of pointer types:
Review, how to define a pointer to an array type directly:
2, function pointer syntax grooming
1) How to define a function type
2) How to define a function pointer type
3) How to define a function pointer (point to the entry address of a function)
"The only way for intermediate programmers to go to senior programmers"
1, function type parameter of function
Pass the entry address of the function, strange effect: "Polymorphic is so"
Analysis of function pointer function parameter thought
1, array pointer syntax grooming
Review how the array data types are defined:
[Email protected]://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream>using namespace Std;int main ( {typedef int (arr) [5];//defines a data type for arr myarr;//with data types, defining variables myarr[3] = 10;//using cout << myarr[3] << endl;int a[5];/ /equivalent to write return 0;} [Email protected]://990487026.blog.51cto.com~/c++$ g++-g-o run main.cpp &&./run 10[email protected]://9904870 26.blog.51cto.com~/c++$
Review, how to define an array of pointer types:
[Email protected]://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream>using namespace Std;int main ( {typedef int (*ARR) [10];//defines a data type arr my_arr;//with data type declaration a variable int a[10];//regular array my_arr = &a;//zone address to me (*my_arr) [0] = 9999 ; cout << * ((*my_arr) +0) << Endl;return 0;} [Email protected]://990487026.blog.51cto.com~/c++$ g++-g-o run main.cpp &&./run 9999[email protected]://99048 7026.blog.51cto.com~/c++$
Review, how to define a pointer to an array type directly:
[Email protected]://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream>using namespace Std;int main ( {int Arr[10];int (*P) [ten];p = &arr; (*p) [2] = 10;cout << * (* (p) + 2) << Endl;return 0;} [Email protected]://990487026.blog.51cto.com~/c++$ g++-g-o run main.cpp &&./run 10[email protected]://9904870 26.blog.51cto.com~/c++$
2, function pointer syntax grooming
1) How to define a function type
2) How to define a function pointer type
3) How to define a function pointer (point to the entry address of a function)
1, the basic invocation of the function:
[Email protected]://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 (or//function name) is the entry address of the function cout << sum <<endl;return 0;} [Email protected]://990487026.blog.51cto.com~/c++$ g++-g-o run main.cpp &&./run 3[email protected]://99048702 6.blog.51cto.com~/c++$
1) How to define a function type
Use function pointers to call functions indirectly
[Email protected]://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);//define a fun function type fun *p = null;//define a variable p = &add;//return value, parameter type exactly the same function address, give me p = ad D Write this, compatible with c history int sum = P (1,6); cout << sum <<endl;return 0;} [Email protected]://990487026.blog.51cto.com~/c++$ g++-g-o run main.cpp &&./run 7[email protected]://99048702 6.blog.51cto.com~/c++$
2) How to define a function pointer type
[Email protected]://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);//define a fun function type fun p = null;//defines a variable p = add;//so write, compatible with c history int sum = P (1,6); cout &L t;< sum <<endl;return 0;} [Email protected]://990487026.blog.51cto.com~/c++$ g++-g-o run main.cpp &&./run 7[email protected]://99048702 6.blog.51cto.com~/c++$
3) How to define a function pointer (point to the entry address of a function)
[Email protected]://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);//define a variable fun = add;int sum = Fun (1,6); cout << sum <<endl;return 0;} [Email protected]://990487026.blog.51cto.com~/c++$ g++-g-o run main.cpp &&./run 7[email protected]://99048702 6.blog.51cto.com~/c++$
"The only way for intermediate programmers to go to senior programmers"
1, function type parameter of function
Get ready:
[Email protected]://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream>using namespace Std;typedef Int (*fun) (int a,int b);//define a data type int add (int a,int b) {return a + B;} int main () {fun F = null;//uses the data type, defines a variable f = &add;//assigns variable variables cout << f (0) << Endl;return;} [Email protected]://990487026.blog.51cto.com~/c++$ g++-g-o run main.cpp &&./run 3[email protected]://99048702 6.blog.51cto.com~/c++$
[Email protected]://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream>using namespace Std;typedef Int (*fun) (int a,int b);//define a data type int add (int a,int b) {return a + B;} The following two ways are the same as 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;} [Email protected]://990487026.blog.51cto.com~/c++$!gg++-g-o run main.cpp &&./run 85[email protected]://99048 7026.blog.51cto.com~/c++$
Pass the entry address of the function, strange effect: "Polymorphic is so"
[email protected]://990487026.blog.51cto.com~/c++$ cat main.cpp #include <iostream >using namespace std;typedef int (*fun) (int a,int b);//define a data type INT&NBSP;ADD1 ( INT&NBSP;A,INT&NBSP;B) {cout << "add1 function is called \n"; return a + b;} INT&NBSP;ADD2 (int a,int b) {cout << "add2 function is called \n"; return a + b;} INT&NBSP;ADD3 (int a,int b) {cout << "add3 function is called \ n"; return a + b;} INT&NBSP;ADD4 (int a,int b) {cout << "add4 function is called \ n"; return a + b;} The following two ways are the same as 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;} [email protected]://990487026.blog.51cto.com~/c++$ g++ -g -o run main.cpp The && ./run add1 function is called 8add2 function is called 5add3 function is called 5add4 function is called 5[ email protected]://990487026.blog.51cto.com~/c++$
Analysis of function pointer function parameter thought
650) this.width=650; "src=" http://s2.51cto.com/wyfs02/M01/83/DB/wKiom1d-F7ajpEOXAAGHMXGPX_k665.jpg "title=" 01_ The function pointer does the function parameter thought analysis. jpg "alt=" wkiom1d-f7ajpeoxaaghmxgpx_k665.jpg "/>
This article is from the "Soul Bucket" blog, please be sure to keep this source http://990487026.blog.51cto.com/10133282/1812376
C + + Fundamentals 8 "difficult" review: array pointers, function pointers, function pointers do function parameters C language polymorphism