指针参数修改 (紧急)

Falleyes 2014-11-18 12:58:01
//指针作为参数不是可以在函数内改变它吗?为什么这个函数不行?
void insert(struct Num* head, struct Num* num){
struct Num* p = head, *q;
if (num == NULL)
return;
if (head == NULL || num->value < head->value){
num->next = head;
head = num; //在这里head被改变
return;
}
q = p->next;
while (q != NULL){
if (num->value < q->value){
p->next = num;
num->next = q;
return;
}
p = p->next;
q = p->next;
}
p->next = num;
num->next = NULL;
return;
}

struct Num* initialize(){
struct Num* head = NULL;
for (int i = 0; i < 6; ++i){
struct Num* p = new struct Num();
p->value = rand();
insert(head, p); //调用完毕后head还是NULL
cout << p->value << ' ';
}
cout << endl;
return head;
}
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lion_Peng 2014-11-18
  • 打赏
  • 举报
回复
用C语言的话,本例用二级指针才能改变head的值

void insert(struct Num** head, struct Num* num){
     ....... 
        *head = num;    //在这里head被改变
     .......
}
Falleyes 2014-11-18
  • 打赏
  • 举报
回复
引用 1 楼 dbzhang800 的回复:
你理解错啦!! 指针和普通变量没有任何区别。 你要修改它(变量或指针),需要用引用方式传递,或者值传递方式传递它的地址。
哦,是我理解错了,多谢!
dbzhang800 2014-11-18
  • 打赏
  • 举报
回复
你理解错啦!! 指针和普通变量没有任何区别。 你要修改它(变量或指针),需要用引用方式传递,或者值传递方式传递它的地址。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧