포인터변수 *str에서요*str은 그 주소에 있는 값이고Str은 주소 잖아요근데Char *str = \"abcd\";Printf (\"%d %s %c\", str, str, str);하면 제 예상대로는주소 &#&#&# ~&#&#&를 예상햇는데요해보니주소 abcd 아무것도안나옴이렇게 나오더군요%s 자체가 배열이라 제대로 나오는곤거요,?
str 배열의 첫번째 원소를 담고 있는 주소값이 아스키 문자열의 그 어떠한 문자와도 매치가 안되서 화면에 표시가 안되는 거임.
%c 로 정수 출력시키면 그 정수에 해당하는 아스키 코드표의 문자가 화면에 출력됨.
근데 배열의 이름은 배열의 첫번째 원소의 주소값을 나타냄.
즉, str의 첫번째 원소가 저장되어 있는 주소값을 문자로 찍는다는 건데 %c에다가 str를 때려박는다는거는
근데 주소값이 보통 졸라 이상한 값이고 큰 값이기 때문에 아스키 코드표의 그 어떠한 문자 값과 매칭이 안됨. 그래서 문자가 출력이 안되는 거임.
찾아보니 아스키 값이 0~127인가까지 밖에 없음. 근데 주소값이 그 사이에 있을리가 만무함.
감사합니다 그럼 %s로 주소값을 때려박으면 나오는 이유는먼가욤
ㄴ 제대로 나오는이유
%s 가 만들어진 이유가 원래 char 배열의 첫번째 원소의 주소값을 받아서 개행문자가 나올때까지 문자를 찍어주게 하도록 하기 위함이기 때문에 그런거임.
제대로 썼으니까
%s 없으면 루프돌려서 문자열 찍어야 됨.
훔
그럼 %s에는 주소값을넣어줘야대는군요