어디에 문제가 있습니까? 응용 프로그램이 충돌 ...이 응용 프로그램을 실행할 때 C- 크래시
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void test(char* x) {
(*x)++;
}
int main() {
char* x = "xD";
test(x);
puts(x);
getch();
return 0;
}
어디에 문제가 있습니까? 응용 프로그램이 충돌 ...이 응용 프로그램을 실행할 때 C- 크래시
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void test(char* x) {
(*x)++;
}
int main() {
char* x = "xD";
test(x);
puts(x);
getch();
return 0;
}
char* x = "xD";
을 사용하면 해당 종류의 데이터에 대한 포인터를 선언하기 때문에 읽기 전용 메모리 주소에 저장된 문자열 리터럴을 수정하려고합니다. 대신 char x [] = "xD";
을 사용하십시오. 이는 포인터가 아니며 스택에 저장되어 있기 때문에 수정할 수있는 배열입니다. 또는 포인터를 사용하려면 메모리를 할당해야합니다.
가 줄을 읽기 전용 메모리에 (*x)++;
x
때문에 포인트 충돌로 인해 정의 char* x = "xD";
에 실행하는 경우.
char x[] = "xD";
으로 변경하십시오. 그래서 x
은 배열이고 값은 변경 될 수 있습니다.
자세한 내용을 입력하십시오. 어떻게 추락합니까? 이 코드를 실행하면 어떻게됩니까? 너는 정확히 무엇을하고 싶니? – kjaquier
문자열 리터럴을 변경했습니다. – BLUEPIXY
C에서 문자열 리터럴 검색 ... – mafso