CC++中数组名的含义

CC++中数组名的含义,第1张

CC++中数组名的含义,第2张

C/C++中的数组名是一个很奇怪的东西。它代表了什么?
对于char array[n](n为常数),大概有几种语义:
const char * char[n]char(&)[n]
下面给出例子(VC.NET 7.1编译):
char * p = array;// array表示const char *
char(* p)[n]= & array;// array表示char[n]
char(& p)[n]= array;// array表示char(&)[n]
void foo(char a[n]);
foo(数组);// array表示const char *
void foo(char(& a)[n]);
foo(数组);// array表示char(&)[n]
void foo(char(* a)[n]);
foo(& array);// array表示char[n]
char * p;
array = p;//"错误C2440,无法从char*转换为char [n]",
// So数组表示char[n]
char other[n];
array = other;//"错误C2106,' = '左操作数必须是L值",
//所以array表示char[n]
long I = 0;
(long &)array = I;//实际改变的不是数组本身的值,而是它所代表的数组中的前4个元素(32位)
//,所以array代表char [n]

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » CC++中数组名的含义

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情