extern class example question.
불꾼
#includestdio.h
int a=1,b=2,c=3;
int f(void);
int main(void)
{
printf(%3d\n,f());// 이건 12나오는게 이해가 갑니다.
printf(%3d%3d%3d\n,a,b,c); // 왜4 2 3이 찍히나요? 외적변수 그대로 1 2 3이 찍혀야하지 않나요?
return 0;
{
int f(void)
{ int b,c;a=b=c=4; return(a+b+c);}
-
한내
a는 지역변수에서 대입한 4를 반영하는데 왜 b,c는 반영 안하나요?
-
놀리기
제가 참조라는 단어를 써서 오해의 소지를 한 점 미리 사과드립니다.
위 소스에서는 포인터가 사용된 것이 아닌 전부 일반 변수가 사용되었기 때문에
참조라는 단어가 어울리지 않네요
소스와 함께 설명해 드릴게요.
#includestdio.h
// 전역변수 선언
int a=1,b=2,c=3;
int f(void);
int main(void)
{
printf(\%3d\\n\ -
코이
a는 전역변수 a를 사용하신다고 말씀하셨으므로, 1이 대입되지 않나 싶습니다. 하지만 a는 f(void)함수의 값을 참조하는군요...
-
세나
f 함수 안에서 b와 c가 선언이 되었기 때문에 a=b=c=4 부분에서
b와 c는 함수안에서 선언된 변수를 참조하게 되고, a라는 변수는 선언된 적이 없으므로
f 함수를 벗어나 더 큰 범위에서 a라는 변수를 찾다가 전역변수 a를 사용하게 됩니다.
따라서 a(전역변수), b(f 함수 내에서 선언된 변수), c(f 함수 내에서 선언된 변수) 가 사용되어
각각 4씩 대입이 되고, f 함수의 호출이 끝나고 main으로 돌아갔을 때
printf 함수내에서 참조 -
앤드류
그렇다면
#includestdio.h
int a=1,b=2,c=3;
int f(void);
int main(void)
{
printf(\%3d\\n\ -
비내리던날
함수내에서 선언한것은 함수내에서밖에 쓰질 못합니다.
#includestdio.h
int a=1,b=2,c=3; 이 전역변수랑 // 이건 소스코드 전체에 쓰이는 변수
int b,c 이 지역변수랑 엄연히 다른 함수인거죠. // 함수 내에서만 쓰이는 변수
그래서 특정 함수를 불러서 다른 영역내의 변수를 조작하고 싶다면
포인터로 불러와야 합니다. -
큰돌찬
main {}블록 안에서는 외적변수보단 먼저 다른 함수에서 쓰인 변수의 영향을(내적변수) 무조건 받는다라고 생각하면 되나요?가까우니까요 ^^?
-
치킨마루
전역변수로 a 를 선언했고 f()에서 a = 4를 선언했으니 4가 나오구요.
f() 에서 지역변수로 b,c를 따로 선언했으므로 전역변수 b,c 와는 별개
그래서 4 2 3 이 나옵니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2700426 | 인터넷 창 띄우는 질문이요 (1) | 정훈 | 2025-07-04 |
2700400 | 원넓이를 계산이요 ㅜㅜ | 천칭자리 | 2025-07-04 |
2700368 | if에 관해서 질문이요... | Orange | 2025-07-04 |
2700339 | 이거 결과값이 왜이런건지.. (4) | 그댸와나 | 2025-07-04 |
2700313 | 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) | 크나 | 2025-07-03 |
2700287 | 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) | 아련나래 | 2025-07-03 |
2700264 | 문자와 숫자 동시에 입력??? | 글고운 | 2025-07-03 |
2700236 | txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) | 미국녀 | 2025-07-03 |
2700211 | 전위 연산자 (2) | 어른처럼 | 2025-07-02 |
2700183 | C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; | 피스케스 | 2025-07-02 |
2700150 | 꼭좀 도와주세요ㅠㅠㅠ | 호습다 | 2025-07-02 |
2700095 | 연산문제...질문... | 오빤테앵겨 | 2025-07-01 |
2700070 | while문 , 3의배수 출력하는 프로그램좀 짜주세욤. | 횃불 | 2025-07-01 |
2700041 | 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? | 헛장사 | 2025-07-01 |
2700012 | 배열// (1) | 전갈자리 | 2025-07-01 |
2699895 | 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) | 선아 | 2025-06-30 |
2699842 | 질문을 너무 많이 하네여.....죄송.... (2) | 해님꽃 | 2025-06-29 |
2699816 | 오류 질문입니다.. (1) | 해비치 | 2025-06-29 |
2699763 | 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) | 미라 | 2025-06-28 |
2699555 | c언어 다항식을 입력을 했는데 왜 출력이 안될까요? | 피스케스 | 2025-06-27 |