lsmmay322   3년 전

bzero 원리가 memset에서 두번째 변수자리에 0을 넣어준거랑 마찬가지잖아요?

근데 만약 아래 코딩처럼  5바이트까지만 0을 넣는다고 하면 

str을 출력할 때 5개만 제외하고 나머지는 출력이 되어야 하는거 아닌가요?

예를 들어 아래 결과는 sd adas..... 이렇게 나올줄 알았는데 아예 안나오더라고요.

출력하니까 빈칸으로 나오던데 이 memset의 원리가 뭔가요?

제가 알기론 메모리에 직접 값을 넣는걸로 아는데

첫번쨰 주소값부터 4바이트까지 0을 넣는거 아닌가요?

그리고 int는 4바이트니까 int 하나당 memset로 넣을 값이 4개씩 들어가게 되는건가요??

pch6828   3년 전

C에서 문자열을 출력할때는 '\0' 흔히 말해서 널 문자가 나올때까지 출력을 합니다. 위의 코드를 실행하면
str이 "\0\0\0\0\0sd adasdsa ad ad asd asd a"이 되고, str부터 출력을 시작하려 할 때 바로 '\0'을 만나서 출력이 끝나게 됩니다.

str[5]를 출력해보시면 아마 's'가 잘 저장되어 있을 것입니다.

lsmmay322   3년 전

아앗 감사합니다!! 그냥 초기화되는건줄 알았는데 널을 넣는거였군요

lsmmay322   3년 전

아 한가지 더 질문이 있는데 bzero를 man으로 통헤 확인해보니까 함수포인터가 없더라고요. memset는 있던데...

bzero는 왜 없는지 알 수 있을까요?

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