读书人

数组名与指针解决办法

发布时间: 2012-03-06 20:47:55 作者: rapoo

数组名与指针
char cStyle[256];
void copyFunction(char* &a)

copyFunction(cStyle);//错误
copyFunction(&(*cStyle));//错误
char* p = cStyle;
copyFunction(p);//正确


为什么?数组名和指针有什么区别。

[解决办法]
char *p = new char[10];
copyFunction(p);//void copyFunction(char* a)
在函数copyFunction中修改指针的a的内容不会影响到指针p的内容.这里是传值(指针变量的值),a是p的一个零时拷贝


copyFunction(p);//void copyFunction(char* &a)
这里传的是char型指针的引用(实际上是一个const的二级指针), 在函数copyFunction中a只是实参的一个别名, 改变a的内容其实就是改变p的内容.


#include <iostream.h>
void Test_p(char *a)
{
cout < < a < <endl;
a = "Hello world! ";
}
void Test_pr(char* &a)
{
cout < < a < <endl;
a = "Hello world! ";
}

void main()
{
char* p = "Hello Kitty! ";
Test_p(p);
cout < < p < <endl;
Test_pr(p);
cout < < p < <endl;

}

结果> > > > > > > > > > > > > > > > > > >
Hello Kitty!
Hello Kitty!
Hello Kitty!
Hello world!

读书人网 >C语言

热点推荐