楼主:
kdok123 (小天)
2014-08-29 18:25:51void pointer(int *p)
{
p=p+1;
}
int main()
{
int a=3;
int *b = &a;
cout<< *b << endl;
pointer(b);
cout << *b << endl;
}
//////以上范例是想测试位址在函数里的改变是否会传回主函数,发现不会///////////
void reverse_link(link *head)
{
link *prev,*temp;
prev = temp = NULL;
while(head!=NULL)
{
temp = head;
head = head->next;
temp->next = prev;
prev = temp;
}
}
int main()
{
reverse_link(head);
cout << "显示反转炼表" << endl;
show_link(head);
}
////以上范例是测试反转炼表的意外范例,炼表没有反转,印出的结果发现头后面的
节点都不见了(这里省略了部分函数,只留问题)////
问题:为什么函数没有办法改变位址,可在炼表中却会被改动呢??
(抱歉刚刚弄错范例,以上才是正确想问的,谢谢)
作者:
LPH66 (-6.2598534e+18f)
2014-08-29 19:19:00一个观念: C 语言只有 pass by value, 传指标进去就只是传指标值进去而已, 所以里面对传进来的值本身改动跟外面无关对指标指向的东西改动外面才看得到简单比喻: 我复制了把门钥匙给你, 你进门拿东西我会知道但你把门钥匙撞凹了跟我的门钥匙却一点关连都没有