您的位置:首页 > 编程语言 > C语言/C++

高级指针

2016-07-17 21:17 323 查看
指针的指针

--指针的指针即指针变量的地址

<span style="color:#000000;">int a=10,b=11;
int *p=&a;//定义了p指针,指向a变量的地址
int *q=&b;
int **m=&p;//定义了m指针,指向p变量的地址
int **n=&q;
printf("%d,%d,%d",a,*p,**m);</span>

eg.
<span style="color:#000000;">void func(int **p){
**p=20;
}
int main(int argc, const char * argv[]) {
int a=10,b=11;
int *p=&a,*q=&b;
int **m=&p,**n=&q;
func(&p);
printf("*p=%d,*q=%d\n",*p,*q);
printf("p=%p,q=%p\n",p,q);
printf("*m=%p,*n=%p",*m,*n);
printf("%d%d\n",**m,**n);

n=m;
printf("*p=%d,*q=%d\n",*p,*q);
printf("%d%d\n",**m,**n);
printf("----------------------------\n");
return 0;
}

<span style="font-family:'HiraginoSansGB';"><span style="font-family:'HiraginoSansGB';">输出结果:
*p=20,*q=11
p=0x7fff5fbff73c,q=0x7fff5fbff738
*m=0x7fff5fbff73c,*n=0x7fff5fbff7382011
*p=20,*q=11
2020</span></span>
</span>
函数指针

#include <stdio.h>
//函数指针
typedef double myint;//自定义类型
typedef double* MYPT;//自定义指针类型
typedef double (*pfunc) (double,double);//函数指针类型重定义
int getMax(int,int);
int getMax(int a,int b){
return a>b?a:b;
}
double add(double a,double b){
return a+b;
}
double sub(double a,double b){
return a-b;
}
double mult(double a,double b){
return a*b;
}
double mydiv(double a,double b){
return a/b;
}
//使用函数指针作为参数
int callFunc(pfunc func,int a,int b){
return func(a,b);
}
<font size="5"><font face="'HiraginoSansGB'"><span style="color:rgb(0.000000%, 17.647060%, 60.000000%);"><span style="font-family:'HiraginoSansGB';"><span style="color:#000000;">int main(int argc, const char * argv[]) {
    //例1
    //getMax函数入口地址
    int (*p)(int,int)=getMax;//函数指针,指针指向自定义函数
    int result=p(10,20);
    printf("%d\n",result);
    printf("---------------------------\n");
    //例2
    pfunc p1 = NULL;
    printf("请输入四则表达式(10+3)\n");
    myint n1,n2;
    char op;
    scanf("%lf%c%lf",&n1,&op,&n2);
    switch (op) {
        case '+':
            p1=add;
            break;
        case '-':
            p1=sub;
            break;
        case '*':
            p1=mult;
            break;
        case '/':
            p1=mydiv;
            break;
    }
    double result1=callFunc(p1,n1,n2);
    printf("1---%.2f\n",result1);
    
    printf("---------------------------\n");
    return 0;
}</span></span></span></font></font>

<span style="font-family:'HiraginoSansGB';">输出结果:
20
---------------------------
请输入四则表达式(10+3<span style="font-family:'HiraginoSansGB';">)</span>
9*3
1---27.00
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言