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

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

2012-09-23 
c语言不能赋值??int strcpy( char* dest, const char* sour ){while( (*dest ! NULL) && (*sour ! NULL)

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

热点排行