浅谈实参形参的区别


//通过以下代码简要说明
#include<stdio.h>
 #include<stdlib.h>
 typedef struct Lnode
 {
  int data;
  struct Lnode *next;
 }Linklist;
 void test(int x,int y,int *s,int *&t,Linklist *i,Linklist *&j)
 {
  printf("变量a形参(传地址)的值:%d\n",x);
  printf("变量b形参(传地址)的值:%d\n",y);
  printf("变量a形参的(传地址)地址的值:%d\n",&x);
  printf("变量b形参的(传地址)地址的值:%d\n",&y);
  printf("指针变量s形参的(传地址)地址值:%d\n",&s);
  printf("指针变量s形参(传引用)的地址值:%d\n",&t);
  printf("链表指针t形参的(传地址)地址值:%d\n",&i);
  printf("链表指针t形参(传引用)的地址值%d\n",&j);
 }

void main()
 {
  int a,b=5;
  int *s;
  Linklist *t;
  printf("变量a的值:%d\n",a);
  printf("变量b的值:%d\n",b);
  printf("变量a的地址的值:%d\n",&a);
  printf("变量b的地址的值:%d\n",&b);
  printf("指针变量s的地址:%d\n",&s);
  printf("链表指针t的地址:%d\n",&t); test(a,b,s,s,t,t);
 }

运行结果如图:

通过运行结果可以看出,实参传递到形参

1.通过地址传递时,形参会分配一块新的内存将实参的值放在其中(不论该变量是普通变量,还是指针变量,还是结构体指针变量),通过上题中通过地址传递的形参的地址均不同于实参地址可以看出

2.通过引用传递时,不会再分配一块新的内存,而是直接操作实参中变量本身,通过上题中通过引用传递的形参地址与实参地址相同可以看出

3.除此可以看出,如果不为变量初始化,系统会自动给他赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值