결론부터 이야기하면 주소로 접근하여 문자열을 바꿔선 안 된다. 연산 자체에는 문자가 없어서 정상적으로 컴파일되지만 실행할 때 운영체제에 의해 강제 종료될 가능성이 있다. 왜냐하면 운영체제는 문자열 상수를 따로 배열의 형태로 읽기 전용 메모리 영역에 저장하며 따라서 그 값을 바꾸는 명령의 실행을 제한한다. 운영체제마다 다를 수 있으나 호환성을 고려한다면 시도하면 안 된다.
문자열은 반환값이 문자열의 시작 주소이다. 포인터 연산을 통해 문자열의 시작 주소를 알게 되고, 문자열을 사용하려면 문자열의 마지막을 의미하는 널문자가 필요하다. 그래서 컴파일러는 문자열의 마지막에 항상 널문자를 붙여준다.
'C언어' 카테고리의 다른 글
[혼공C] 12-1 gets 함수를 사용한 문자열 입력(puts, fgets, fputs) (0) | 2021.10.07 |
---|---|
[혼공C] 12-1 scanf 함수를 사용한 문자열 입력 (0) | 2021.10.07 |
[혼공C] 11-2 scanf 함수의 int 자료형 변수 입력과 stdio.h의 EOF (0) | 2021.10.07 |
[혼공C] 11-2 입출력 함수가 버퍼를 사용하면 좋은 점 (0) | 2021.10.07 |
[혼공c] 문자열과 포인터, 그리고 배열 (0) | 2021.09.05 |
결론부터 이야기하면 주소로 접근하여 문자열을 바꿔선 안 된다. 연산 자체에는 문자가 없어서 정상적으로 컴파일되지만 실행할 때 운영체제에 의해 강제 종료될 가능성이 있다. 왜냐하면 운영체제는 문자열 상수를 따로 배열의 형태로 읽기 전용 메모리 영역에 저장하며 따라서 그 값을 바꾸는 명령의 실행을 제한한다. 운영체제마다 다를 수 있으나 호환성을 고려한다면 시도하면 안 된다.
문자열은 반환값이 문자열의 시작 주소이다. 포인터 연산을 통해 문자열의 시작 주소를 알게 되고, 문자열을 사용하려면 문자열의 마지막을 의미하는 널문자가 필요하다. 그래서 컴파일러는 문자열의 마지막에 항상 널문자를 붙여준다.
'C언어' 카테고리의 다른 글
[혼공C] 12-1 gets 함수를 사용한 문자열 입력(puts, fgets, fputs) (0) | 2021.10.07 |
---|---|
[혼공C] 12-1 scanf 함수를 사용한 문자열 입력 (0) | 2021.10.07 |
[혼공C] 11-2 scanf 함수의 int 자료형 변수 입력과 stdio.h의 EOF (0) | 2021.10.07 |
[혼공C] 11-2 입출력 함수가 버퍼를 사용하면 좋은 점 (0) | 2021.10.07 |
[혼공c] 문자열과 포인터, 그리고 배열 (0) | 2021.09.05 |