函数的传引用调用[c][code]

以下代码在VC环境下运行:

#include  < stdio.h >

void  square( int   * );

main(
void )
{
    
int  y = 10 ;
    printf(
" The original value of y is %d \n " , y);
    
    square(
&y );    

    printf(
" The new value of y is %d \n " , y);
    
    
return   0 ;
}

void  square( int   * x)
{
    
*  x  =   *  x  *   *  x;
}

 

step1. 运行完语句int y=10;后:

Name      Value

+ &y        0x0012ff7c
   &x        CXX0017: Error: symbol "x" not found

Memory:

0012FF24  02 00  00 00  14 FE  41 00 83  00 00  .....嗀....
0012FF2F  00 00  00 00  00 00  00 00 00  00 90  ...........
0012FF3A  FD 7F CC CC CC CC CC CC CC CC CC  ?烫烫烫烫.
0012FF45  CC CC CC CC CC CC CC CC CC CC CC  烫烫烫烫烫.
0012FF50  CC CC CC CC CC CC CC CC CC CC CC  烫烫烫烫烫.
0012FF5B  CC CC CC CC CC CC CC CC CC CC CC  烫烫烫烫烫.
0012FF66  CC CC CC CC CC CC CC CC CC CC CC  烫烫烫烫烫.
0012FF71  CC CC CC CC CC CC CC CC CC CC CC  烫烫烫烫烫.
0012FF7C  0A 00  00 00 C0  FF 12  00 39 11  40  ........9.@
0012FF87  00 01  00 00  00 70 0E  43 00 A0  0D  .....p.C...

 

step2. 运行到语句* x = * x * * x;时:

Name      Value

   &y        CXX0017: Error: symbol "y" not found
+ &x        0x0012ff2c "|"

Memory:

0012FF24  02 00  00 00  14 FE  41 00 7C  FF 12  .....嗀....
0012FF2F  00 00  00 00  00 00  00 00 00  00 90  ...........
0012FF3A  FD 7F CC CC CC CC CC CC CC CC CC  ?烫烫烫烫.
0012FF45  CC CC CC CC CC CC CC CC CC CC CC  烫烫烫烫烫.
0012FF50  CC CC CC CC CC CC CC CC CC CC CC  烫烫烫烫烫.
0012FF5B  CC CC CC CC CC CC CC CC CC CC CC  烫烫烫烫烫.
0012FF66  CC CC CC CC CC CC CC CC CC CC CC  烫烫烫烫烫.
0012FF71  CC CC CC CC CC CC CC CC CC CC CC  烫烫烫烫烫.
0012FF7C  0A 00  00 00 C0  FF 12  00 39 11  40  ........9.@
0012FF87  00 01  00 00  00 70 0E  43 00 A0  0D  .....p.C...

注意:

1. 间接引用运算符*的优先级高于乘法运算*

2. 需要在被调用函数中修改参数值,应该给该函数传递参数的地址

3. 传递数组不需要使用运算符&,因为C自动传递数组起始内存单元的地址

4. 对于大对象的传递,使用指针能大大缩小复制的开销,要复制的只是4字节的内存(32位机)

 

转载于:https://www.cnblogs.com/JCSU/articles/1291995.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值