字符指针
- 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"};是在内存中分配了空间,可以修改的