本例子介紹:引用一維數組,引用二維數組,如何定義"函數指針",如何"引用函數指針",如何通過"引用改變函數指針"。還有哦,"引用函數指針"作為函數參數。
還有哦,"傳回引用函數指針的引用"。
#include<iostream>
#include<stdlib.h>
//引用一維數組
void main01()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int(&ra)[10](a);
int i = 0;
for (auto data : ra)//c++11的循環
{
data = i + 5;
std::cout << data << std::endl;
}
std::cout << a << std::endl; //003BFB74
std::cout << ra << std::endl; //003BFB74
std::cout << &a << std::endl; //取位址 003BFB74
std::cout << &ra << std::endl; //取位址
system("pause");
}
//引用二維數組
void main02()
{
int a[2][5] = { 1,2,3,4,5,6,7,8,9,10 };
int(&ra)[2][5](a);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 5; j++) {
std::cout << " " << ra[i][j];
}
std::cout << "\n";
}
std::cout << &a << std::endl;
std::cout << &ra << std::endl;
system("pause");
}
int jia(int a, int b) {
return a + b;
}
int jian(int a, int b) {
return a - b;
}
//引用函數指針
void main() {
int(*p)(int a, int b)(jia);
std::cout << p(1, 2) << std::endl; //3
int(*&rp)(int a, int b)(p);//引用函數指針
rp = jian; //()僅僅适用于初始化場合,這裡用等于号
std::cout << p(1, 2) << std::endl; //-1
system("pause");
}
"引用函數指針"作為函數參數
代碼片段如下:
int jia(int a, int b) {
return a + b;
}
int jian(int a, int b) {
return a - b;
}
void change( int(* & rp)(int a,int b) )
{
rp = jian;
}
//引用函數指針
void main() {
int(*p)(int a, int b)(jia);
std::cout << p(1, 2) << std::endl;
change(p);
std::cout << p(1, 2) << std::endl;
//輸出 3
// -1
system("pause");
}
傳回值是函數指針的引用
//超級變态,傳回函數指針的引用
int(*& changep(int(*&rp)(int, int)))(int, int)
{
rp = jian;
return rp;
}
void main() {
int(*p)(int a, int b)(jia);
std::cout << p(1, 2) << std::endl;
p = changep(p);
std::cout << p(1, 2) << std::endl;
// 3
// -1
system("pause");
}
麼麼達,晚安。