c语言不能赋值??
int strcpy( char* dest, const char* sour )
{
while( (*dest != NULL) && (*sour != NULL) )
{
*dest++ = *sour++;
}
return 0;
}
int main(void)
{
char * ch1 = "hello";
char * ch2 = "world";
strcpy(ch1,ch2);
return 0;
}
为什么运行到*dest++ = *sour++;就出现访问错误,
我改成*dest = 'a';还是报错,
不能赋值???!!!
[解决办法]
char * ch1 = "hello";
这个是常量指针,位于常量区不可修改。改成数组即可。
int main(void){ char ch1[] = "hello"; char ch2[] = "world"; strcpy(ch1,ch2); return 0;}
[解决办法]
ch1指向的常量字符串
[解决办法]
ch1和ch2指向的常指针"hello"和"world".
"hello"和"world"可不是在栈中分配的, 是在专门的符号区分配.
它们是不可修改的.
[解决办法]
如果要修改, 请使用
char ch1[6], ch2[6];或者更大
[解决办法]
两个指针都指向常量区,不能进行写操作
[解决办法]
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写。后果自负。