用函数指针变量调用函数
#include <stdio.h>
#include <stdlib.h>
int Max(int x,int y){
int z;
if(x>y){
z=x;
}
else{
z=y;
}
return z;
}
/*
int main()
{
int x,y,m;
scanf("%d%d",&x,&y);
m=Max(x,y);
printf("%d\n",m);
return 0;
}*/
int main(){
int Max(int ,int);
int (*p)();//定义函数指针p
int a,b,c;
p=Max;//函数指针p指向Max
scanf("%d%d",&a,&b);
c=(*p)(a,b);
printf("%d\n",c);
}
数组指针与指针的指针
#include <stdio.h>
#include <stdlib.h>
int main()
{
static int a[5]= {1,3,5,7,9};
int *num[5]= {&a[0],&a[1],&a[2],&a[3],&a[4]};
int **p,i;
p=#/**????????? p=num,结果也一样*/
for(i=0; i<5; i++)
{
printf("%d\t",**p);
p++;
}
return 0;
}
指针汇总
#include <iostream>
using namespace std;
#include "stdio.h"
int main()
{
int a = 1;
int b = 0;
int *p;
int c = 0;
int **m;
p = &a;
m = &p;
printf("&a 的值是a的地址: %d\n",&a);//a的地址
printf("a 的值是: %d\n",a);//a的值
printf("&p 的值是指针p的地址: %d\n",&p);//指针p的地址
printf("p 的值是是a的地址: %d\n",p);//指针p的值是a的地址
printf("*p 的值是a的值 %d\n",*p);//*p是a的值
printf("&m 的值是 %d\n",&m);//指针的指针的地址
printf("m 的值是是p的地址: %d\n",m);//m的值是p的地址
printf("*m 的值是p的值: %d\n",*m);//是p的值
printf("**m 的值是a的值 %d\n",**m);//是a的值
}
指针小测试
#include <iostream>
using namespace std;
int main()
{
int a=1;
cout<<"a="<<a<<endl;
int *p;
p = &a;
cout<<"p="<<p<<endl;
cout<<"*p="<<*p<<endl;
int **m;
m=&p;//不能写m=p,不是一个级别的
cout<<"&p=p的地址="<<&p<<endl;
cout<<"*m=p的值=a的地址="<<*m<<endl;
cout<<"**m="<<**m<<endl;
cout << "Hello world!" << endl;
return 0;
}