안녕하세요 길벗수험서 운영팀입니다.
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( );
행복한 하루되세요 :)
라는 답변을 받았는데요,
char* n1 , n2 , n3 n 뒤에 붙어있는 숫자는 무엇을 의미하나요 ? 의미가 없는건가요?
( ex - n11이 와도 배열의 첫 주소 인건가요?
또한
char * n1
char * p1
으로 배열을 설정해도
return n을 만나면
같은 주소에 있는( ex-1000) 입력값을 출력해 주면 되는건가요?
return n과 배열의 첫주소이름 n1에 있는 n은 다른 n인거 맞죠 ?
갑자기 이 n에 대해 헷갈리네요 .
가장중요하고 궁금한 ...
char*n1 =getname()
char*n2 =getname()
char*n3 =getname()
에서 배열 선언이 바뀔때마다
같은 주소인 1000번째에 계속 리셋이되면서 gets(n) 입력이 되는건가요 ?
왜 리셋이 될 수 있는건가요 ?
안녕하세요 길벗수험서 운영팀입니다.
하나의 기억장소에는 하나의 값만 기억할수 있습니다.
a = 10 이렇게 쓰면 10이라는 값이 a에 저장됩니다.
a = 20 이렇게 쓰면 이때 기존에 가지고 있던 10이라는 값은 없어지고 20이라는 값이 a에 저장됩니다.
char* n1 = getname( );
char* n2 = getname( );
char* n3 = getname( );
3개의 코드 모두다 문자형 포인터 변수 n1, n2, n3를 선언하는데
getname( ) 함수를 호출한 후 돌려받은 값으로 초기화해라 라는 뜻입니다.
여기서 n1, n2, n3는 모두 변수명입니다.
위에 있는 코드를 한줄씩 만날때 마다 getname( ) 함수를 호출을 하고
getname( ) 함수중
gets(n) 을 만나 사용자로부터 문자열을 입력받아 n에 저장을 하고
return n 을 만나 n의 시작주소(1000번지)를 함수를 호출했던 곳을 반환을 해줍니다.
char* n1 = getname( ); 이코드를 만나 getname( ) 함수를 호출할것이고
gets(n); 첫번째로 이코드를 만나면 사용자로부터 "홍길동" 문자열을 입력받아 n에 저장을 하고
return n 을 만나 n의 시작주소 1000번지를 함수를 호출했던 곳을 반환을 해주면
n1변수는 1000번지 주소를 갖습니다.
char* n2 = getname( ); 이코드를 만나 getname( ) 함수를 호출할것이고
gets(n); 두번째로 이코드를 만나면 사용자로부터 "김철수" 문자열을 입력받아 n에 저장을 하고
return n 을 만나 n의 시작주소 1000번지를 함수를 호출했던 곳을 반환을 해주면
n2변수는 1000번지 주소를 갖습니다.
char* n2 = getname( ); 이코드를 만나 getname( ) 함수를 호출할것이고
gets(n); 두번째로 이코드를 만나면 사용자로부터 "박영희" 문자열을 입력받아 n에 저장을 하고
return n 을 만나 n의 시작주소 1000번지를 함수를 호출했던 곳을 반환을 해주면
n3변수는 1000번지 주소를 갖습니다.
그리고 그 밑에 있는 아래 3줄의 코드를 실행해 결과값을 출력을 하는데
n1변수에 1000번지, n2변수에 1000번지, n3변수에 1000번지를 가지고 있습니다.
이때 1000번지에는 현재 "박영희"데이터가 저장이 되어있으니
아래 3줄의 코드에서 "박영희"가 출력됩니다
printf("%s\n", n1);
printf("%s\n", n2);
printf("%s\n", n3);
행복한 하루되세요 :)
-
관리자2024-07-25 23:01:52
안녕하세요 길벗수험서 운영팀입니다.
하나의 기억장소에는 하나의 값만 기억할수 있습니다.
a = 10 이렇게 쓰면 10이라는 값이 a에 저장됩니다.
a = 20 이렇게 쓰면 이때 기존에 가지고 있던 10이라는 값은 없어지고 20이라는 값이 a에 저장됩니다.
char* n1 = getname( );
char* n2 = getname( );
char* n3 = getname( );
3개의 코드 모두다 문자형 포인터 변수 n1, n2, n3를 선언하는데
getname( ) 함수를 호출한 후 돌려받은 값으로 초기화해라 라는 뜻입니다.
여기서 n1, n2, n3는 모두 변수명입니다.
위에 있는 코드를 한줄씩 만날때 마다 getname( ) 함수를 호출을 하고
getname( ) 함수중
gets(n) 을 만나 사용자로부터 문자열을 입력받아 n에 저장을 하고
return n 을 만나 n의 시작주소(1000번지)를 함수를 호출했던 곳을 반환을 해줍니다.
char* n1 = getname( ); 이코드를 만나 getname( ) 함수를 호출할것이고
gets(n); 첫번째로 이코드를 만나면 사용자로부터 "홍길동" 문자열을 입력받아 n에 저장을 하고
return n 을 만나 n의 시작주소 1000번지를 함수를 호출했던 곳을 반환을 해주면
n1변수는 1000번지 주소를 갖습니다.
char* n2 = getname( ); 이코드를 만나 getname( ) 함수를 호출할것이고
gets(n); 두번째로 이코드를 만나면 사용자로부터 "김철수" 문자열을 입력받아 n에 저장을 하고
return n 을 만나 n의 시작주소 1000번지를 함수를 호출했던 곳을 반환을 해주면
n2변수는 1000번지 주소를 갖습니다.
char* n2 = getname( ); 이코드를 만나 getname( ) 함수를 호출할것이고
gets(n); 두번째로 이코드를 만나면 사용자로부터 "박영희" 문자열을 입력받아 n에 저장을 하고
return n 을 만나 n의 시작주소 1000번지를 함수를 호출했던 곳을 반환을 해주면
n3변수는 1000번지 주소를 갖습니다.
그리고 그 밑에 있는 아래 3줄의 코드를 실행해 결과값을 출력을 하는데
n1변수에 1000번지, n2변수에 1000번지, n3변수에 1000번지를 가지고 있습니다.
이때 1000번지에는 현재 "박영희"데이터가 저장이 되어있으니
아래 3줄의 코드에서 "박영희"가 출력됩니다
printf("%s\n", n1);
printf("%s\n", n2);
printf("%s\n", n3);
행복한 하루되세요 :)