读书人

c语言不能赋值?解决方法

发布时间: 2012-09-23 10:28:11 作者: rapoo

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";
这个是常量指针,位于常量区不可修改。改成数组即可。

C/C++ code
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")
//加这句可以让常量区可写。后果自负。

读书人网 >C语言

热点推荐