字符串指针和字符串数组---Access violation writing location 错误

来源:互联网 发布:花粉儿秒杀软件 编辑:程序博客网 时间:2024/06/05 17:06
这两天写程序遇到一个问题,用字符指针去修改字符串中的字符,运行时程序崩溃。调试的时候弹出窗口报错--"Access violation writing location..."。后来查了查资料,发现是没有区分好字符串指针和字符串数组的概念。记录下来。错误的程序代码如下:

int _tmain(int argc, _TCHAR* argv[]){char *pStr = "hench";//char *p = pStr;//*p = 'H';//修改首字母return 0;}



查了查资料,原因小结如下:

char *pStr = "hench";
    上面的声明是字符串指针,指针指向字符串常量存放的内存,可读不可写。
   如果直接修改pStr[n] = 'x' 或者用字符指针去间接修改字符串的内容,程序调试运行时会报“Access violation writing location”错误。

char cStr[] = "hench";
    上面声明的才是字符串变量,程序把存放“hench”的内存(只读区域)复制到cStr的内存中,以后操作的就是cStr变量,可读可写。
1 0
原创粉丝点击