최근에 C++ 입문서 플러스를 읽고 있는데, 함수와 포인터에 관한 장이 더 어렵다고 느꼈습니다.
C++ 입문서 플러스: 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. 함수 이름으로서의 포인터
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
4. 함수 포인터 배열
//前面函数为double *类型,cout第一部分返回double指针,第二部分返回double指针指向的值 cout<<(*p1)(av,3)<<":"<<*(*p1)(av,3)<<endl; //和上面的cout一样只不过是使用函数指针名来调用函数 cout<<p2(av,3)<<":"<<*p2(av,3)<<endl;
5. 포인터 배열과 배열 포인터의 차이점
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);
배열에 대한 포인터
*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; //첫 번째 것과 동일
rreee
위 내용은 C++ 함수 및 포인터의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!