C-指针

1.

void change(int  x,int y)
{
    int tmp;
    tmp=x;
    x=y;
    y=tmp;
}
int  main()
{
    int a=3;
    int b=5;
    change(a,b);
    printf("a=%d, b=%d\n",a,b);
}

输出结果:a=3, b=5
由此可以看出, 在调用函数的时候,并没有改变a, b本身的值。所以说,函数调用是值传递。

void change(int * x,int *y)
{
    int tmp;
    tmp=*x;
    *x=*y;
    *y=tmp;
}
int  main()
{
    int a=3;
    int b=5;
    change(&a,&b);
    printf("a=%d, b=%d\n",a,b);
    return 0;
}

输出结果:a=5, b=3
如果运用指针,就改变了本身的值。
2.
int * p (指向int型的指针,也可指向int 数组);
int **p(二级指针,指向int 型的数据);
int p[n]([]优先级高,理解为int (p[n]));
int (*p)[n](二维数组指针);
int p()(函数,返回int );
int (*p)()(函数指针,指向原型为int func()的函数);
3.
而我们要知道怎样定义一个指针指向函数,int (*p)(int,int)这是固定写法,前面的int是指针将来指向的函数的返回值的类型,如果没有函数返回值,那就是void,后面括号里的两个int 当然就是指针将指向的函数的形参。指针指向函数用起来确实有点抽象,要想熟练运用的话就多去做一些这方面的练习吧!

int sum(int x,int y)
{
    return x+y;
}
int main()
{
    int a=5;
    int b=6;
    int (*p)(int,int);
    p=sum;
    int result=(*p)(a,b);
    printf("The result is %d\n",result);
    return 0;
}

输出结果:
The result is 11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值