수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

extern class example question.

불꾼

2023.04.01

#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);}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 한내

    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
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com