C++ 関数とポインター

炎欲天舞
炎欲天舞オリジナル
2017-08-03 16:56:151893ブラウズ

最近 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

3 を使用します。関数名としてのポインタ名

//前面函数为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

1 auto pc = &pa; //&paは配列全体のアドレス、paは配列の最初の要素のアドレス


2

3 const double * (*( *pd)[3])(const double *, int ) = &pa; //最初のものと等しい

4

5 **&pa = *pa = pa[0]

コード:

りー

以上がC++ 関数とポインターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。