[Dev C] C언어 문자열 char 질문
조회수 757회
문자열을 입력하고 출력할 때 쓰는 char*
을 쓰는데,
들어보니까 문자열을 입력하고 출력할때는 코드를
char q[100];
이렇게 변수 이름 뒤에 숫자를 써야한다더군요.
쓰는 이유가 궁금합니다.
쉽게 설명 부탁드려요
아 그리고 이렇게 문자열을 출력할땐 scanf("%s", q)
이렇게 변수 이름 앞에 & 기호를 안붙혀도 된다는데 그건 또 왜인가요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
먼저 말씀드리자면, 배열과 포인터는 다릅니다.
(변수 이름 뒤에 숫자를 적는 것이 배열인데, 배열이 뭔지 모르겠다면 기본서를 다시 보고, 이글을 읽어 주시기 바랍니다.)
char * 는 문자가 저장된 변수의 주소를 가리키는 포인터입니다. 배열과는 다릅니다.(기본서를 보세요.)
선언과 초기화 단계에서, char * p = "hello" ; 라고 썼다 칩시다. 여기서 문자열 hello는 문자열 리터럴이므로 변경이 불가 합니다. 즉, 쉽게말하자면, char 형 배열에 저장된 값이 아닌, 읽기 전용으로 '메모리 어딘가'에 저장된 문자열 상수 입니다.
하지만 포인터 p를 이용해서, 배열에 접근해 데이터를 변경하는 것은 됩니다.
char q[100]="hello"; char* p = q; printf("%c", *p);
두번째로, char q[100] 은 배열이므로, 데이터의 입/출력이 가능합니다. int 형 배열에 숫자를 넣고, 출력하는 것과 비슷합니다.(똑같지는 않습니다.)
질문 2.
그리고 scanf함수는 문자열을 입력 받아올 때 쓰는 함수입니다.
scanf("%s", q)라고 쓰는 이유는 q가 '배열의 이름'이기 때문입니다.
'배열의 이름'이 무엇을 뜻하는지 생각해보면 답을 유추해내실 수 있습니다.
댓글 입력