在地址的传递中,数组的地址和指针的地址是不一样的.
第一个程序传递给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);
}
阅读(1344) | 评论(0) | 转发(0) |