C에관해 초보적으로 헷갈리는것 질문입니다 ㅠ
그리
2023.04.01
1)번질문
#include stdio.h
int main(void)
{
char nData = 0;
char *pnData = &nData;
gets(pnData);
puts(pnData);
return 0;
}4글자까지오류가나지않고 5글짜째 입력할때부터 오류가납니다.
6.0으로 했고 디버깅모드로 메모리를 보니 1글자 넘어갈때부터 이미 잘못된게 아닌가싶은데
왜 4글짜까진 무사히 입력되고 출력이되는걸까요?
5글자째 입력하면 0xc0000005에서 access violation 이런식으로 오류가 뜨기도하는데
그럼 2글자째부터 떠야 정상이 아닌가요? 주소는 왜 또 저렇게 오류가뜨는지.. 혼란스럽습니다.2)번질문
#include stdio.h
int main(void)
{
int nData = 0;
int *pnData = &nData;
gets((char*)pnData);
puts((char*)pnData);
return 0;
}
ㄱ.형변환을 안해주면 오류가 나는것은 int *pnData = &nData;열에서 int 때문인가요?
6.0에 c++코딩이었습니다.
ㄴ.char *pnData = &nData;는 왜안돼는걸까요?
매우 하찮은내용인데 스스로 헷갈려서 고수님들 조언 구합니다
부탁드립니다.