scanf 함수에 관한 질문 드립니다!!
겨울c
질문 제목 :scanf 함수에 관한 질문 드립니다!!scanf 함수에 관한 질문 드립니다!! 질문 내용 :
#include stdio.h
struct employee
{
char name[20];
char phonenumber[20];
int age;
};
int main(void)
{
struct employee person[3];
int i;
for(i=0; i3; i++)
{
printf(이름을 입력해주세요!\n);
scanf(%s, person[i].name);
printf(핸드폰 번호를 입력!\n);
scanf(%s, person[i].phonenumber); // 이 부분
printf(나이를 입력!\n);
scanf(%d, &person[i].age); // 이부분
}
for(i=0; i3; i++)
{
printf(이름은 %s 입니다!\n, person[i].name);
printf(핸드폰 번호는 %s 입니다!\n, person[i].phonenumber);
printf(나이는 %d 입니다!\n, person[i].age);
}
return 0;
}
---------------------------------------------------------------scanf 함수에서 %s로 문자열 입력 받을 때, 멤버 변수명(person[i].phonenumber) 자체가 주소 값이라배열의 0번 주소 값부터 차례대로문자열이 자동으로 입력되기 때문에 실행되는 것이고,%d로 정수 값을 입력 받을때는 왜 &를 붙여줘야 할까요??공부하다가 궁금한 부분이 생겨서 질문 올립니다!
-
가든
이해하기 쉽게 설명해 주어서 감사드립니다.
-
김애교
배열을 %d 로 출력해보면
12ffff 이런 숫자가 십진수로 나올 거에요
아머님 말대로 주소인거죠
이번엔 정수형 변수를 %d로 출력하면
변수에 저장된! 값이 나옵니다
이때 우리가 원하는게 값이 저장된 위치.
즉, 변수의 주소를 원한다면 & 기호로 알아낼 수 있습니다
scanf함수는 해당 주소에 서식 문자에 맞게 저장하게 되는데요.
이때 주소를 정확히 넘겨줘야되요
배열은 이름자체가 주소를 뜻하고
정수형 변수는 주소를 알아내기 위해 & 기호를 사용합니다.
-
우수리
포인터를 배우게 되면 자연스레 이해할 수 있게 됩니다.