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

最近发现很多关于常量字符串的!该如何解决

2012-03-09 
最近发现很多关于常量字符串的!char*pabcdefg (等价于constchar*pabcdefg )//初始化是否等价于char*

最近发现很多关于常量字符串的!
char   *p   =   "abcdefg "               (   等价于   const   char   *p   =   "abcdefg ")//初始化

是否等价于

char   *p   ;
p   =   "abcdefg "//赋值,我认为此时不是常量字符串了.我个人认为是不等价的,可书上说是等价的.未解
...........................................................
void   main()
{
char   p[10];
char   *q;
strcpy(p,   "abcdefg ");
q   =   strcat(p,   "a ");
cout < <q < <endl;
}
或者
void   main()
{
char   p[10]   =   "abcdefg ";
char   *q;
//strcpy(p,   "abcdefg ");
q   =   strcat(p,   "a ");
cout < <q < <endl;
}
都是正确的


但下面为什么是错误的?
void   main()
{
char   *p;
char   *q;
p   =   "abcdefg ";//此时不是相当于赋值并且分配空间了么?如果说没有分配空间的话这样可以么p   =   new   char[10];但这样输出是错误的,为什么?
//strcpy(p,   "abcdefg ");     在此时不是和p   =   "abcdefg ";等价么?
q   =   strcat(p,   "a ");
cout < <q < <endl;
}

[解决办法]
p = "abcdefg ";//此时不是相当于赋值并且分配空间了么?如果说没有分配空间的话这样可以么p = new char[10];但这样输出是错误的,为什么?
============================================
p只是个指针变量,4个字节的内存空间,new出来的p指向一块堆内存,这块堆内存可以修改

热点排行