Chinaunix首页 | 论坛 | 博客
  • 博客访问: 652697
  • 博文数量: 151
  • 博客积分: 3498
  • 博客等级: 中校
  • 技术积分: 1570
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-28 18:10
文章分类

全部博文(151)

文章存档

2014年(12)

2013年(17)

2012年(17)

2011年(5)

2010年(12)

2009年(2)

2007年(26)

2006年(22)

2005年(38)

分类: C/C++

2007-08-01 21:29:52

在地址的传递中,数组的地址和指针的地址是不一样的.
第一个程序传递给test函数的参数用的是引用,但是在test函数中打印的地址
却是数组的首地址.
第二个程序,是传递一个指针的引用给test函数.这个时候.在test函数中打印的地址
和&addr 的地址不同.

疑为GCC在编译的时候作了处理.

1.地址都一样的程序
void test(char *tmp)
{
   printf("tmp addr=%p\n",tmp);
}

int main(int argc,char *agrv[])
{
   char addr[256];
   printf("the addr=%p\n",addr);
   printf("the &addr=%p",&addr);
   test(&addr);
}

2.地址输出不一样的程序
void test(char **tmp)
{
   printf("tmp addr=%p\n",tmp);
}

int main(int argc,char *agrv[])
{
   char *addr = new char;
   printf("the addr=%p\n",addr);
   printf("the &addr=%p",&addr);
   test(&addr);
}


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