C语言实参、形参、函数调用、指针、引用、&符号实例

时间:2025-06-18

C语言实参、形参、函数调用、指针、引用、*&符号实例

实现环境:VC6

程序源代码:

#include "stdio.h"

#include <malloc.h>

void fun1(int a) //传值调用

{

printf(" 形参a为:%d\n",a);

a--;

printf(" 形参a变为:%d\n",a);

}

void fun2(int *b) //指针调用

{

printf(" 指针形参b为:%X\n", b);

printf(" 指针形参b所指内容为:%d\n", *b);

(*b)--;

printf(" 指针形参b所指内容变为:%d\n", *b);

}

void fun3(int &c) //数值的引用调用,相当于给数值实参n起个新名字叫c,然后c就是实参n

{

printf(" 引用数值形参c的地址为:%X\n",&c);

printf(" 引用数值形参c为:%d\n", c);

c--;

printf(" 引用数值形参c变为:%d\n", c);

}

void fun4(int * &d) //指针的引用调用,相当于给指针实参m起个新名字叫d,然后d就是实参m

{

printf(" 引用指针参数d为:%X\n", d);

printf(" 引用指针参数d所指内容为:%d\n", *d);

(*d)--;

printf(" 引用指针参数d所指内容变为:%d\n", *d);

}

void main()

{

} int n=11; //有11个苹果 printf("实参n为:%d\n",n); fun1(n); //传值调用 printf("数值n为:%d\n\n",n); printf("实参n的地址为:%X\n",&n); printf("数值n为:%d\n",n); fun2(&n); //指针调用 printf("实参n的地址为:%X\n",&n); printf("数值n为:%d\n\n",n); printf("实参n的地址为:%X\n",&n); printf("数值n为:%d\n",n); fun3(n); //数值的引用调用 printf("实参n的地址为:%X\n",&n); printf("数值n为:%d\n\n",n); int * m; m=&n; printf("数值n的地址为:%X\n",&n); printf("数值n为:%d\n",n); printf("指针m为:%X\n",m); fun4(m); //指针的引用调用 printf("数值n的地址为:%X\n",&n); printf("数值n为:%d\n",n); printf("指针m为:%X\n\n",m);

参考内容:

VC++中形参什么时候需要加&符号

引用不是必须的,因为用指针可以达到相同的效果

当你传递的实参值需要在函数中获取改变的时候,就需要传引用或者指针 假设有 n = 10 个苹果

void fun(int m) //传值函数,每调用一次减少一个苹果

fun(n);//如果按上面的声明 ,这样调用完后,n还是10,并没有变成9

在这种时候就需要用到引用或者指针

void fun(int &m) ; //引用类型函数声明 ,对应调用fun(n); //

void fun(int *m); //指针类型函数声明 ,对应调用fun(&n); //

具体的函数体可以自己去写

事实上,引用的本质就是指针,使用引用能完成的事情,使用指针同样能完成 ,不过引用看上去更简洁和直观

引用参数

在形参表中以符号“&”开始的参数即为引用参数。

如果一个形参是引用参数,调用部位将把实参的地址传递给子程序。

于是子程序操作的就是实参真正的变量,而不是它的副本。

如果程序员想修改指针本身,而不是指针引用的对象:

那么他可以声明一个参数,该参数是一个指针的引用,例如:下面是交 换两个指针的函数。

如下声明

int * &v1; //实际是为指针取了一个别名,这样就可以通过别名改变指针本身

应该从右向左读,v1 是一个引用,它引用一个指针,指针指向 int 型的对象。

用函数 main() 操纵函数 rswap() 我们可以如下修改代码以便交换两个指针值:

编译并运行程序 产生下列输出 Before ptrswap(): pi: 10 pj: 20

After ptrswap(): pi: 20 pj: 10

参考:

C++ 引用参数 深入分析

http:///charley_yang/archive/2010/12/14/1905161.html

比如函数 void a(int &x,int &y)

当调用该函数时,如:a(m,n);

就相当于在执行函数体时,x为m的引用,y为n的引用

x,y相当于指向m,n的指针

相当于给m,n起的别名,这时在函数体内对x,y进行的操作实际上就是对m,n进行操作。

%d %o %x %X

分别是 十进制,八进制,十六进制(小写),十六进制(大些)的输出格式!

…… 此处隐藏:11字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言实参、形参、函数调用、指针、引用、&amp;符号实例.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219