memset함수가 바이트 단위로 값을 초기화시켜주는 함수라고 알고 있는데
memset에 첫번쨰 인자에 arr을 전달하고 2번쨰에 0 그리고 3번쨰에
4바이트만 할당하게 하고 난 뒤에 for문으로 출력해보면
첫번째 값만 0으로 되고 나머지는 다 쓰레기값으로 출력되서
제데로 나옵니다.
그리고 2번쨰값을 -1로 해도 첫번쨰만 -1로 나오고 다 제데로 나옵니다.
그런데 0과 -1을 제외한 다른 모든정수값들은 다 주소값으로 표시가 되는건지
%d 십진수 형식으로 출력해봤을떄 memset(arr,40,sizeof(arr)/sizeof(int))
원하는 값value로 채워지지가 않는데 이유좀 알려주실분 있으신가요?
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include<stdio.h>
int main(void)
{
int arr[5];
int i;
memset (arr, 0, sizeof(arr)/sizeof(int));
for(i=0 ; i<5 ; i++)
{
printf("%d ",arr[i]);
}
}
님 ㅋ 프갤러들 이렇게 자세한거 물어보시면 아무도 대답못해요 ㅎ 쉬운거나 물어뜯어서 알려주고 타박하고 구박하지 이런건 어려워서 손도못댐 ㅋ 님이 이해하셈 ㅋ
제대로?
ㄴ 모르면꺼져 ㅋ
세번째 인자가 바이트단위인걸 알면서 왜 sizeof(arr)/sizeof(int)를 넣음?
&arr아니냐?
츤데레네 허허.. 씨뻘럼이
sizeof arr / sizeof *arr
맨 마지막에 5바이트 되서 첫번쨰마 ㄴ확인하게
첫댓글로 어그로 떡밥뿌려서 답변 유도하는 병신이넹 헤헤
ㅅㄱ
아 잠깐 왜 나누냐 그냥 sizeof (arr)이지
하려는거같은데
근데 저렇게 해도 값으로 안나오고 주소값으로 나올텐데
학습장애 있나보다 진심;
지 글에 닉바꿔서 지가 댓글다는 클라스