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*의 시작주소 라는것이 이해가 안감.)
안녕하세요 길벗수험서 운영팀입니다.
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( );
행복한 하루되세요 :)