1679
2014-07-09 15:32:37
0
주의* 저도 C를 이제 막 배우는 사람이라 정확하지 않은 것일 수도 있습니다. 사실 정확하지 않으면 함부로 말하지 말아야하지만, 제가 댓글 쓴 내용에 잘못된 점이 있다면 다른 분들께서 분명 고쳐주시리라 믿고, 제가 아는 한도내에서 써보겠습니다.
.
글쓴분이 전에 쓰신 글을 생각해보면 %s가 문자열 string을 의미하는게 맞습니다.
Printf, Scanf함수들이
입출력하는건 문자열이라서
변수를 우리가 입력해줄 때나 반대로 저장된 변수를
출력할 때 데이터를 문자열로 바꾸는 작업을 함수내부에서
하게됩니다.
컴퓨터에 저장되는 자료가 0과 1로 이루어진 이진자료인 탓에
0000 으로 저장된 자료가 정수 0을 의미하는지, 문자열을 의미하는지 컴퓨터는 알 수가 없죠.
그래서 각 변수에 저장된 이진값을 어떤자료형으로 인식하게 할지를 설정하는게 변환문자열, 글쓴분의 표현으론 환경변수죠.
제가 설명을 잘한건진 모르겠는데, 예를 들어서
char형에 어떤 문자를 저장해도 메모리에는 이진수로 저장됩니다.
이걸 출력함수에서 printf("%c", 변수)
로 사용하면 컴파일러가 얘를 문자변수구나 하고 받아들이지만,
rintf("%d", 변수) 로 써버리면 메모리에 저장된 이진수를 정수형으로 인식해서 정수를 출력하게 되는거죠.
다른 언어는 저런거 없이도 처음 선언된 자료형가지고 알아서 출력하기도 하지만
C는 그런거없고 "주소 알려줄게 그 주소로가면 데이터가 있을거야. 걔가 무슨형이냐면... "하고 매번 알려줘야 하는거죠.