printf("%s\n", a);
위에서 a는 문자열 123을 시작주소를 나타냄
%s는 시작주소를 알려주면 그 시작주소부터 \0가 나오기 전까지의 문자들을 화면에 출력해 줌
char* a = "123";
//char* a;
//a = "123";
printf("%s\n", a);
위에서 a는 문자열 123을 시작주소를 나타냄
%s는 문자열의 시작주소를 알려주면 그 시작주소부터 \0가 나오기 전까지의 문자들을 화면에 출력해 줌(%s의 특징은 문자열의 시작주소를 인자로 받는다는 것이다)
char* a = "123";
문자열 123은 read-only영역에 저장되어짐
a는 read-only영역에 저장된 문자열 123의 시작 주소를 가지고 있음
read-only영역에 저장된 문자열 123은 변경될 수 없음
*a = '5';
와 같이 문자열123에 내용중 문자1을 문자5로 변경할 수 없다
char* a = "123";
*a = '5';
위에서 2번째줄의 *a의 의미
a = 문자열의 시작주소(=문자1의 주소)
* = 가지고 있는 주소을 따라가서 그 주소안의 저장된 내용을 봄
*a = *(문자열의 시작주소) = 문자열의 시작주소에 찾아가서 그 안에 저장되어 있는 내용(=1)
아래 부분 이해를 위해서 위의 부분을 먼저 이해할 것
=========================================================================================================
main(int argc, char* argv[])에서
char* argv[]는 char* argv의 배열이다
명령어 실행시 인자가 들어오게 되게됨
명령어 실행을
start 1.jpg 2.jpg 이라고 실행했다고 하면
argc는 3이다
char* argv[0] char* argv[1] char* argv[2]
[ ] [ ] [ ]
| | |
∨ ∨ ∨
[start] [1.jpg] [2.jpg] <= read-only영역
와 같이 결과가 나타난다
위의 결과에서 char* argv[]부분은 아래와 같은 의미를 지닌다
argv[0] = "start";
argv[1] = "1.jpg";
argv[2] = "2.jpg";를 선언한 것과 같음