最近发现很多关于常量字符串的!
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指向一块堆内存,这块堆内存可以修改