배열관련 질문
니지
2023.04.01
질문 제목 : 배열관련 질문str[-1] 이렇게 써도 되는지?질문 내용 :
아래 코드는 입력받은 영단어를 거꾸로 출력하는 코드입니다.
i에 문자열길이를 저장하고, i를 감소시켜서 0이 될때까지 출력하는 방식인데..
i가 -1이 되면 str[-1]에 저장된 값을 읽게 되는데 이거 괜찮은건지요?
#include stdio.hint main(void)
{
char str[100];
int i=0;printf(영단어입력:);
scanf(%s,str);
while(str[i]!=0) //문자열의 길이를 계산한다
i++;
while(i!=-1)
{
printf(%c,str[i]);
i--;
}
return 0;
}
-
활력초
str[-1]에서 [-1] 은 연산자에 불과해요.
str[i] 는 *(str+i) 일 뿐이죠.
(-1)[str]과도 같아요.
C에서는 첨자 i 가 배열의 범위를 벗어나는 지 감시하는 등의
프로그래머가 책임져야 할 일들을 대신 해주면서 자원을 낭비하지 않습니다. -
개구리
문법적으로는 옳습니다.
하지만 str[-1]이 올바르지 않은 메모리 공간이라면 사용하지 않는 것이 좋습니다.
위 코드에서 i가 -1이 되면 while루프를 빠져나가므로 str[-1]을 참조할 일은 없습니다.