Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15357874
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: LINUX

2008-10-20 13:30:40

感觉比较丢人,现在才搞清楚,这个初级问题!

#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.
}

阅读(1702) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~