bzero 원리가 memset에서 두번째 변수자리에 0을 넣어준거랑 마찬가지잖아요?
근데 만약 아래 코딩처럼 5바이트까지만 0을 넣는다고 하면
str을 출력할 때 5개만 제외하고 나머지는 출력이 되어야 하는거 아닌가요?
예를 들어 아래 결과는 sd adas..... 이렇게 나올줄 알았는데 아예 안나오더라고요.
출력하니까 빈칸으로 나오던데 이 memset의 원리가 뭔가요?
제가 알기론 메모리에 직접 값을 넣는걸로 아는데
첫번쨰 주소값부터 4바이트까지 0을 넣는거 아닌가요?
그리고 int는 4바이트니까 int 하나당 memset로 넣을 값이 4개씩 들어가게 되는건가요??
C에서 문자열을 출력할때는 '\0' 흔히 말해서 널 문자가 나올때까지 출력을 합니다. 위의 코드를 실행하면str이 "\0\0\0\0\0sd adasdsa ad ad asd asd a"이 되고, str부터 출력을 시작하려 할 때 바로 '\0'을 만나서 출력이 끝나게 됩니다.str[5]를 출력해보시면 아마 's'가 잘 저장되어 있을 것입니다.
아앗 감사합니다!! 그냥 초기화되는건줄 알았는데 널을 넣는거였군요
아 한가지 더 질문이 있는데 bzero를 man으로 통헤 확인해보니까 함수포인터가 없더라고요. memset는 있던데...
bzero는 왜 없는지 알 수 있을까요?
댓글을 작성하려면 로그인해야 합니다.
lsmmay322 3년 전
bzero 원리가 memset에서 두번째 변수자리에 0을 넣어준거랑 마찬가지잖아요?
근데 만약 아래 코딩처럼 5바이트까지만 0을 넣는다고 하면
str을 출력할 때 5개만 제외하고 나머지는 출력이 되어야 하는거 아닌가요?
예를 들어 아래 결과는 sd adas..... 이렇게 나올줄 알았는데 아예 안나오더라고요.
출력하니까 빈칸으로 나오던데 이 memset의 원리가 뭔가요?
제가 알기론 메모리에 직접 값을 넣는걸로 아는데
첫번쨰 주소값부터 4바이트까지 0을 넣는거 아닌가요?
그리고 int는 4바이트니까 int 하나당 memset로 넣을 값이 4개씩 들어가게 되는건가요??