potocanon1234   2년 전

Q1. 원래 fgets()에서 sizeof(p)를 썻는데 계속 버퍼 오버런이 나오더라구요 그래서 (N+1)*sizeof(char)쓰니까 그런 경고는 안나와서 왜 경고가 고쳐졌는지 질문 드립니다

Q2. 경고는 안뜨는데 출력이 이상한 정수가 출력됩니다;; 문제점좀 지적해주세요ㅠㅠ

wjdgud0621   2년 전

A1. p는 포인터입니다. 따라서 p에는 4바이트 정수가 저장됩니다. -> sizeof(p)==4

A2. atoi는 문자열을 숫자로 변경합니다. 따라서 atoi(&p[0])==12345, atoi(&p[1])==2345입니다.

potocanon1234   2년 전

sizeof(p)에서 p는 포인터 변수이므로 포인터 변수 자체의 바이트크기가 나오고 char p[30] 에서 sizeof(p)는 배열의 이름이므로 전체(30바이트)가 출력되는 건가요? 

wjdgud0621   2년 전

네 맞습니다

댓글을 작성하려면 로그인해야 합니다.