0

我有以下用 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 有什么问题?

4

1 回答 1

2

char* S1 = "cccc";实际上是在声明 a const char*which 指向的内存可能是只读的。写入行中的这些字符串

S1[0] = S1[1] = S1[2] = '*';

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

于 2012-11-13T19:43:29.557 回答