C ++无法更改Char数组中的元素

时间:2017-07-06 20:38:46

标签: c++

我是来自Java的C新手。请解释一下为什么:



text[0] = 'a';




是不可能的,我的程序崩溃了。



#include "caesarHead.h"
#include <limits.h>

int main(void) {

	caesar("Hello this is a sample text", 12);

	printf("\n\n");
}


void caesar(char text[], char offset) {
	int i = 0;
	text[0] = 'a';
	char *p = text;

	for (p; *p != '\0'; p++) {	
			
		printf("String: %c \n", text[i]);
		printf("Ascii: %i \n", (int)text[i]);
		i++;
	}
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您无法修改字符串文字。事实上,您可以尝试,但这是未定义的行为,它可能会也可能不会。

相反,首先将字符串放入变量然后使用它。在这种情况下,在调用vector时将字符串初始化,并将其放在堆栈上,因此您可以稍后对其进行修改。

main

字符串文字必须用作不可修改的字符串。在尝试修改此类字符串时,我们有未定义的行为