总结如下:
#include <iostream>
#include <iomanip>
using namespace std;
int Func(int a) { int b=a;cout<<"Func "; return b;}
int Func1(int a) { int b=a;cout<<"Func1 "; return b;}
int Func2(int a) { int b=a;cout<<"Func2 "; return b;}
int Func3(int a) { int b=a;cout<<"Func3 "; return b;}
int Func4(int a) { int b=a;cout<<"Func4 "; return b;}
int Func5(int a) { int b=a;cout<<"Func5 "; return b;}
int Func6(int a) { int b=a;cout<<"Func6 "; return b;}
int Func7(int a) { int b=a;cout<<"Func7 "; return b;}
int Func8(int a) { int b=a;cout<<"Func8 "; return b;}
int Func9(int a) { int b=a;cout<<"Func9 "; return b;}
int Func10(int a){ int b=a;cout<<"Func10 "; return b;}
void main()
{
int intData; // 一个整型数
int *pintData; // 一个指向整型数的指针
int **ppintData; // 一个指向指针的指针,它指向的指针指向一个整型数
int intArray[10]; // 一个有10个整型数的数组
int *intArray_IndexpintData[10]; // 一个有10个指针的数组,内个指针对应指向一个整型数
int (*pintArray)[10]; // 一个指向有10个整型数数组的指针
int (*pFunc)(int); // 一个指向函数的指针,该函数有一个整形参数并返回一个整型数
int (*intArray_IndexpFunc[10])(int); // 一个有10个指针的数组,每个指针对应指向一个函数,该函数有一个整形参数并返回一个整型数
intData=5;
pintData=&intData;
ppintData=&pintData;
cout<<setw(10)<<intData <<setw(10)<< pintData<<setw(10)<< ppintData <<endl<<endl;
cout<<setw(10)<<&intData<<setw(10)<<&pintData<<setw(10)<< &ppintData <<endl<<endl;
cout<<setw(10)<<intData <<setw(10)<<*pintData<<setw(10)<< *ppintData <<endl<<endl;
cout<<setw(10)<<intData <<setw(10)<< pintData<<setw(10)<< &*ppintData <<endl<<endl;
cout<<setw(10)<<intData <<setw(10)<< pintData<<setw(10)<<&(*ppintData)<<endl<<endl;
cout<<setw(10)<<intData <<setw(10)<< pintData<<setw(10)<< *&ppintData <<endl<<endl;
cout<<setw(10)<<intData <<setw(10)<< pintData<<setw(10)<<*(&ppintData)<<endl<<endl;
for(int i=0;i<10;i++){ intArray[i]=i; cout<<setw(10)<<intArray[i]<<" ";}
cout<<endl<<endl;
for(int j1=0;j1<10;j1++){ intArray_IndexpintData[j1]=&intArray[j1];
cout<<setw(10)<<intArray_IndexpintData[j1]<<" "; }
cout<<endl<<endl;
for(int j2=0;j2<10;j2++){ cout<<setw(10)<<intArray_IndexpintData[j2]<<" "; }
cout<<endl<<endl;
for(int j3=0;j3<10;j3++){ cout<<setw(10)<<intArray_IndexpintData[j3]<<" "; }
cout<<endl<<endl;
for(int j4=0;j4<10;j4++){ cout<<setw(10)<<intArray_IndexpintData[j4]<<" "; }
cout<<endl<<endl;
pintArray=&intArray;
pFunc=Func;
cout<<setw(10)<<pFunc(12)<<endl;
intArray_IndexpFunc[1]=Func1;intArray_IndexpFunc[2]=Func2;intArray_IndexpFunc[3]=Func3;intArray_IndexpFunc[4]=Func4;
intArray_IndexpFunc[5]=Func5;intArray_IndexpFunc[6]=Func6;intArray_IndexpFunc[7]=Func7;intArray_IndexpFunc[8]=Func8;
intArray_IndexpFunc[9]=Func9;intArray_IndexpFunc[10]=Func10;
cout<<setw(10)<<intArray_IndexpFunc[1](1)<<endl;
cout<<setw(10)<<intArray_IndexpFunc[2](2)<<endl;
cout<<setw(10)<<intArray_IndexpFunc[3](3)<<endl;
cout<<setw(10)<<intArray_IndexpFunc[4](4)<<endl;
cout<<setw(10)<<intArray_IndexpFunc[5](5)<<endl;
cout<<setw(10)<<intArray_IndexpFunc[6](6)<<endl;
cout<<setw(10)<<intArray_IndexpFunc[7](7)<<endl;
cout<<setw(10)<<intArray_IndexpFunc[8](8)<<endl;
cout<<setw(10)<<intArray_IndexpFunc[9](9)<<endl;
cout<<setw(10)<<intArray_IndexpFunc[10](10)<<endl;
cout<<endl<<endl;
fflush(stdin); // 清空缓冲区
int bianliang1,bianliang2;
bianliang1=pFunc(22);
// bianliang2=intArray_IndexpFunc[10](234);
cout<<setw(8)<<bianliang1<<endl;
// cout<<setw(8)<<bianliang2<<endl;
}
运行时的结果如下:
下面看一下指针函数
函数的返回值为指针类型则命名的函数就叫指针函数
#include<iostream>
using namespace std;
int * GetDate(int wk,int dy);
void main()
{
int week,weekPos;
do
{
printf("Enter week(1-5)weekPos(1-7)\n");
scanf("%d%d",&week,&weekPos);
}
while(week<1||week>5||weekPos<1||weekPos>7);
cout<<"第"<<week<<"周"<<"星期"<<weekPos<<" 是: ";
printf("%d",*GetDate(week,weekPos));
cout<<"号"<<endl;
}
int * GetDate(int IndexRow,int IndexColumn)
{
static int calendar[5][7]=
{
{1,2,3,4,5,6,7},
{8,9,10,11,12,13,14},
{15,16,17,18,19,20,21},
{22,23,24,25,26,27,28},
{29,30,31,-1}
};
return &calendar[IndexRow-1][IndexColumn-1];
}
运行的结果如下: