C语言实参、形参、函数调用、指针、引用、&符号实例
时间:2025-06-18
时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……上一篇:玩具店创业计划书