link_list
链表的结构
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
向链表中添加元素
void addToTail(ListNode **pHead, int val){
ListNode *temp = new ListNode(val);
if(*pHead == NULL){
*pHead = temp;
}else{
ListNode *p = *pHead;
while(p->next){
p = p->next;
}
p->next = temp;
}
}
上面传入的是二级指针,如果是一级指针会怎样 如果是一级指针,当head为NULL的时候,退出函数后,head仍然是NULL
#include<iostream>
using namespace std;
int a= 10;
int b = 100;
int *q;
void func(int *p)
{
cout<<"func:&p="<<&p<<",p="<<p<<endl; //note:3
p = &b;
cout<<"func:&p="<<&p<<",p="<<p<<endl; //note:4
}
int main()
{
cout<<"&a="<<&a<<",&b="<<&b<<",&q="<<&q<<endl; //note:1
q = &a;
cout<<"*q="<<*q<<",q="<<q<<",&q="<<&q<<endl; //note:2
func(q);
cout<<"*q="<<*q<<",q="<<q<<",&q="<<&q<<endl; //note:5
system("pause");
return 0;
}
输出结果为:
&a=0032F000,&b=0032F004,&q=0032F228
*q=10,q=0032F000,&q=0032F228
func:&p=0018FD24, p=0032F000
func:&p=0018FD24, p=0032F004
*q=10,q=0032F000,&q=0032F228
执行函数后,*q的值没有变成100;在上面可以看出,当把指针作为函数参数时,会产生一个临时变量,指向与传入指针相同的地址处。对这个临时指针的修改并不能修改实参指针的值。