函数参数传递的理解!

 

楼主发表于:2009-07-28 19:19:51

C/C++ code #include < iostream.h >

void f( int * p)
{
    cout
<< p << endl;          // 输出局部指针变量p的值   (1)疑问一

    cout
<<& p << endl;         // 输出p在堆栈上的地址 (2)疑问二

    cout
<<* p << endl;

   
* p = 100 ;

    cout
<<* p << endl;

    p
= NULL;
}

void main()
{

int iCount = 0 ;

f(
& iCount);

cout
<< iCount << endl;

}
(1)疑问一    输出0x0012ff7c
(2)疑问二    输出0x0012ff2c

cout < <p < <endl;          //输出局部指针变量p的值  (1)疑问一
cout < <&p < <endl;        //输出p在堆栈上的地址    (2)疑问二

为什么上面写个p就能输出地址,而下面&p才能输出地址?
以上是别人发贴的问题 我的理解:

函数调用传值  分 传值 (变量的拷贝) 和 传址(传递变量的真实地址、在主函数中分配的真实地址)

函数调用 f(&iCount) ->  相当与  赋值  f(int *p=&iCount) 而在这里函数f里分配了一个指针P

定义语句就才形参表里(int *p= &iCount)既定义又赋值

这样就好理解了  P中的地址指向了 &iCount  而P本身的地址是在 函数f中定义分配的
输出p 和 &p就是两个概念了

接着题深入讲解一下:
  函数参数的传递 分传递 值   和传递  地址
  我们理解的时候 f(&iCount) 理解成  f(int *p=&iCount)  //函数局部定义指针变量P赋予值
               f(iCount) 理解成  f(int p=iCount)     //函数局部定义整型变量P赋予值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值