1:怎样定义一个指向指针型数据的指针变量呢?如下:
char**p;
基本技巧:指针即地址。
2:指针和指向变量,指针的指针的关系图:
(指针的指针) (指针)
char name=‘a’;
char*p=&name;
char**pp;
pp=&p;
3:什么情况下使用指针的指针:
你试图改变一个指针的值的时候使用二级指针。
1:链表中使用较多。
isthead *p1,*p2,*p3;
listhead **pp;
pp=&p1;(*pp=p1;与前面是等价的。)
or
node*p1,p2,p3
node **pp;
pp=&p1;(*pp=p1;与前面是等价的。)
2:进行指针的传地址调用,(主要是修改传入的指针的值)
void GetMemory(char *p, int num)
{
p = (char *)malloc(sizeof(char) * num);
}
void Test(void)
{
char *str = NULL;
GetMemory(str, 100); // str 仍然为 NULL
strcpy(str, "hello"); // 运行错误
}
正确:
void GetMemory(char **p, int num)
{
*p = (char *)malloc(sizeof(char) * num);
}