포인터변수에 문자열 입출력시 * 연산자 유무를 잘 모르겠습니다.

질문 제목 : * 유무질문 내용 :

int형 포인터변수에 number주소값을 넣는는다
int number=10;
int * num = &number;

//출력부분
printf(%d,*num );// 10출력

*num=20; //num이 가리키는 주소값에 있는 값을 20으로 바꾼다

printf(%d, *num);//20출력

그런데 char형 포인터변수에 문자열입력과 출력시

char * ch=hello;
printf(%s,ch); ----여기서 왜 *ch 로 출력을 하지 않는건가요??

값변경시에도

*ch= hi; 이게아니라

ch =hi;로 값을 변경하던데 왜 이런건가요??

그리고 책을보면 문자열저장시

첫글자 주소값을 저장해서 hi 를출력을 한다고하는데

컴퓨터가 문자열끝을 어떻게 알고 hi까지 출력하는건가요?

배열 문자열 처럼 null을 만날때까지 출력을 하는건가요?이해가 갈듯하면서 안가니..너무 궁금해서 질문드립니다

C언어 다른 글

목록