segmentation fault 가 뭐죠?
글쓴이: 익명 사용자 / 작성시간: 수, 2001/11/28 - 5:50오후
1부터 9까지 숫자 하나를 입력받아 해당 구구단을 출력하는 코드를 짰는데요... 컴파일은 되는데 실행하면 segmentation fault가
나오네요.
main()
{
int deplex, obj, i;
printf("please insert number(1-9)");
scanf("%d", obj);
for (i=1; i<=9; i++) {
deplex=obj*i;
printf("%d * %d = %d\n", obj, i, deplex);
}
printf("\n");
}
# filename
please insert number(1-9) <-- 숫자 입력후 엔터
segmentation fault
Forums:
Re: segmentation fault 가 뭐죠?
scanf("%d", obj);
&obj 로 쓰셔야죠.
주로..메모리를 잘못접근해서 그런현상이 자주 발생합니다..
Re^2: segmentation fault 가 뭐죠?
임동현 wrote..
scanf("%d", obj);
&obj 로 쓰셔야죠.
주로..메모리를 잘못접근해서 그런현상이 자주 발생합니다..
답변감사합니다. 적용시켜보니 실행이 되더군요. 그런데 '&'의 뜻이 무엇인가요? 제가 알기로는 데이터가 저장된 주소값을
가리키는 걸로 알고있는데.. 왜 '&'를 붙여주어야 하는 것입니까?
Re^3: segmentation fault 가 뭐죠?
scanf 함수에서
obj 변수의 포인터(&obj)를 알아야만 obj 변수의 값을 변화시킬수 있기 때문입
니다.
obj -> 함수에서 pass by value 형태이고 함수 내에서 obj 값을 변화시킬수 없
습니다.
&obj -> 함수에서 pass by reference 형태입니다. 함수내에서 obj 주소값으로
obj 변수가 있는 위치(주소)를 알게 되고 그 위치(주소)에 알맞은 값(value)
을 넣어줄수가 있는거
죠...
댓글 달기