#include <stdio.h>
#include <string.h>
void luther_gliethttp_func(char *name)
{
char **pname = &name;//因为name为指针,编译时用一个寄存器表示,所以
//name引用name所指向存储空间中的内容
//&name引用name所在空间地址值
//luther_gliethttp_func(NULL);这样将NULL值传给name,即name = NULL;
//luther_gliethttp_func("hello");这样将"hello"的首地址传给name,即name = "hello"
//luther_gliethttp_func(tname);这样将同为指针的tname中的内容--即,指针数值,传递给name,
//所以不论哪一种,name作为一个指针,永远都会分配到一个存储地址,这个存储地址所在空间存放了指针数据内容,而name引用的就是这个内容
//pname则引用name的存储地址,
//luther_gliethttp_func(NULL);这样之后,并不是name的存储地址变成了0,而是说name存储地址空间,存储的数据为NULL.
//而ppname是对name存储空间的一个引用.
printf("name=%p,&name=%p\n", name, &name);
*pname = (char*)(0x80);
printf("name=%p,&name=%p\n", name, &name);
}
int main(int argc, char* argv[])
{
luther_gliethttp_func(NULL);//传递NULL值,即name中的内容为NULL.
}
|