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

字符指针,该如何解决

2012-03-09 
字符指针C/C++ code#include string.h #include stdio.h int main(void) {char *dest abcdefghijkl

字符指针

C/C++ code
#include <string.h> #include <stdio.h> int main(void) {     char *dest = "abcdefghijklmnopqrstuvwxyz0123456789";     char *src = "******************************";     printf("destination prior to memmove: %s\n", dest);     memmove(dest, src, 26);     printf("destination after memmove:    %s\n", dest);     return 0; } 

运行会出现错误,如果将字符指针改成一个较大的字符数组,则可以正常运行,为什么字符指针就会出现运行错误呢?

[解决办法]
C/C++ code
字符串指针被认为是常量指针,即可以理解为const char*类型,因为const char*常量指针指向的内容不能更改,所以任何试图改变改字符串的操作都会报错。
[解决办法]
http://www.cnblogs.com/guyan/archive/2011/12/23/2299179.html
[解决办法]
char *src并没有分配内存空间,只是指向了一个常量字符串,复制的时候当然会报错,如果想不报错就要为src申请足够的内存空间,字符数组在定义后是申请了内存空间的,所以不会出现问题。
[解决办法]
#pragma comment(linker,"/SECTION:.rdata,RW")
//开头加这句可以让常量区可写。
[解决办法]
char *dest = "abcdefghijklmnopqrstuvwxyz0123456789"; 
char *src = "******************************"; 
printf("destination prior to memmove: %s\n", dest); 
memmove(dest, src, 26); 
printf("destination after memmove: %s\n", dest); 

char *dest = "sdksd" ;等价于const char * dest = "sdksd";
这种情况下字符串是常量,应该在代码区,不能修改字符串的内容

char dest[100] = {"sdksd"};是在内存中分配了空间,可以修改的

热点排行