我在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 有什么问题?
答案 0 :(得分:2)
char* S1 = "cccc";
实际上是声明一个const char*
,它指向可能只读的内存。在行
S1[0] = S1[1] = S1[2] = '*';
给出了未定义的行为,并且会在某些平台上崩溃。