分享

Argunment Passing

 Tech-d 2014-08-29
分为 passed by reference,  passed by value,按引用传递和按值传递

Passed by Value:
void reset(int *ip)
{
*ip = 0;
cout << "*ip " << ip << " " << *ip  << " " << &ip << endl;
ip = 0;
cout << "ip " << &ip << " " << ip << " " << *ip << endl;
//cout << "*ip " << *ip << " " << endl;
}


int main()
{
//线性表list
int list[MAXSIZE] = {1,2,3,4,5};

//cout << &list[0] << " " << &list[1] << endl;
int *p = new int(23);
cout << "p address " <<  &p << endl;
cout << "p pointed address " << p << " " << *p << endl;

reset(p);
cout << p << " " << *p << endl;

return 0;
}

指针变量保存的是一个地址值,而指针变量本身也被保存在一个地址里,所以:
- *p得到的是p指针保存的内容,即指向的地址
- &p得到的是p指针本身的地址


指针作为参数传递时,其实是值传递,ip是一个新的变量,只不过是它指向的地址跟p是一样的,证据就是&p跟&ip的值是不同的。所以ip = 0;这句,是将ip保存的地址值改为了0000 0000,而&ip仍然不变















    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多