책 내용 질문하기
문제 3번 기출문제
도서
2024 시나공 정보처리기사 실기 기출문제집
페이지
42
조회수
153
작성일
2024-07-15
작성자
유*찬
첨부파일

main 함수에서 getname ( ); 메소드를 호출하고


30 개의 주소를 가진 배열을 선언하고

n1 이름 입력후 리턴 -> char n1주소에 return을 하는데,


그다음 함수호출에서 n2 도 char n1 주소인 ex ) n1000 에 들어가는 이유는 무엇인가요 ?

저는 n1주소 = 홍길동 이후 주소에 n2를 넣어야 한다고 생각했는데,

get name 메소드호출시 왜 같은주소로 n1,n2,n3 가 들어가게 되는건가요?



( 항상 n1,n2,n3 이런식으로 나오기보다는 n* , n1 이 두가지 주소를 비교하는 식으로 나오기 때문에

n*은 주소 , n1 은 n*의 첫시작주소 라고 생각하고 문제를 풀었기에 n2 = n*의 시작주소 라는것이 이해가 안감.)

답변
2024-07-15 22:48:02

안녕하세요 길벗수험서 운영팀입니다.

30개의 요소를 갖는 n이라는 문자형 배열을 전역변수로 선언을 했고

gets(n); 에서 사용자로부터 입력받은 문자열을 n에 저장을 합니다


return n; 코드에서 반환하는 값으로 n을 썼는데 여기서 n이라는 것은 배열의 이름이고

배열의 이름을 지정하면 배열의 시작주소를 의미하는 것으로

n배열의 시작주소를 함수를 호출했던 곳으로 반환을 해줍니다.


아래의 코드에서 어떤것을 실행을 하여 getname( ) 함수를 호출을 하든

반환값은 return n; 을 만나 n의 시작주소를 반환해주니 n1, n2, n3모두 같은 주소가 반환이 되는것입니다

char* n1 = getname( );

char* n2 = getname( );

char* n3 = getname( );

행복한 하루되세요 :)

  • 관리자
    2024-07-15 22:48:02

    안녕하세요 길벗수험서 운영팀입니다.

    30개의 요소를 갖는 n이라는 문자형 배열을 전역변수로 선언을 했고

    gets(n); 에서 사용자로부터 입력받은 문자열을 n에 저장을 합니다


    return n; 코드에서 반환하는 값으로 n을 썼는데 여기서 n이라는 것은 배열의 이름이고

    배열의 이름을 지정하면 배열의 시작주소를 의미하는 것으로

    n배열의 시작주소를 함수를 호출했던 곳으로 반환을 해줍니다.


    아래의 코드에서 어떤것을 실행을 하여 getname( ) 함수를 호출을 하든

    반환값은 return n; 을 만나 n의 시작주소를 반환해주니 n1, n2, n3모두 같은 주소가 반환이 되는것입니다

    char* n1 = getname( );

    char* n2 = getname( );

    char* n3 = getname( );

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.