首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组名与指针解决办法

2012-03-06 
数组名与指针charcStyle[256]voidcopyFunction(char*&a)copyFunction(cStyle)//错误copyFunction(&(*cSt

数组名与指针
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!

热点排行