最近 C++ 入門 Plus を読んでいますが、関数とポインタの章の方が難しいと感じています。
C++ 入門 Plus: 第 7 章 関数: C++ プログラミング モジュールより
1.関数ポインタを宣言しますか?
関数プロトタイプと同様: 関数の戻り値とパラメーター リストを指すポインターを宣言する必要があります
double pam(int); //参数为int 类型,返回值为double 类型的函数 double (*pf);(int) //指向参数为int类型,返回值为double 类型的指针 pf = pam; //函数名代表了函数的地址 double x = pam(4); //函数名调用 double x = (*pf)(4); //指针调用 double x = pf(4); //C++也允许将指针名当作函数名使用
2. C++ 11 の自動型推論
const double * f1(const double *, int); const double * (*p1)(const double *, int); //p1 poitns to f1 auto p2 = f1; //C++11 automatic type deduction,p2 points to f1 as well
//前面函数为double *类型,cout第一部分返回double指针,第二部分返回double指针指向的值 cout<<(*p1)(av,3)<<":"<<*(*p1)(av,3)<<endl; //和上面的cout一样只不过是使用函数指针名来调用函数 cout<<p2(av,3)<<":"<<*p2(av,3)<<endl;
4. 関数ポインタ配列
const double *(*pa[3]) (const double *,int) = {f1,f2,f3}; //创建函数指针数组 //通过指针调用函数,得到返回的指针 const double *px = pa[0](av,3); //call by pointer as if it were a function name const double *py = (*pa[0])(av,3); //正常调用 //得到函数返回指针指向的值 double x = *pa[0](av,3); double x = *(*pa[0])(av,3);
5. ポインタ配列と配列ポインタの違い
rrreええ
配列へのポインタ
*pd[3] //an array of 3 pointers (*pd)[3] //a pointer to an array of three elements
2
3 const double * (*( *pd)[3])(const double *, int ) = &pa; //最初のものと等しい
4
5 **&pa = *pa = pa[0]
コード:
りー
以上がC++ 関数とポインターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。