dev c ++和指向字符串的指针,程序挂起

时间:2012-11-13 19:41:08

标签: c string pointers

我在Dev C ++中创建了以下程序:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>


#define MAX_STRING_LEN 80

int main(int argc, char *argv[])
{
     char* S1 = "cccc";
     char* S2 = "dddd";

     int i, l;

     S2 = S1;
     S1[0] = S1[1] = S1[2] = '*';
     S1[3] = 0;
     printf("S1:\t%s\n",S1);
     printf("S2:\t%s\n",S2);

     system("PAUSE");   
     return 0;
 }

但是当我运行它时,程序挂起,实际上我使用的是Dev C ++ 4.9.2和Windows 7 有什么问题?

1 个答案:

答案 0 :(得分:2)

char* S1 = "cccc";实际上是声明一个const char*,它指向可能只读的内存。在行

中写入这些字符串
S1[0] = S1[1] = S1[2] = '*';

给出了未定义的行为,并且会在某些平台上崩溃。