AR삽질러

C로 시작하는 컴퓨터 프로그래밍4판 - 9장 변수영역 본문

C

C로 시작하는 컴퓨터 프로그래밍4판 - 9장 변수영역

아랑팡팡 2023. 4. 10. 20:45
728x90

혼자해보기9-1

다음 소스코드에서 틀린부분을 수정하고 출력 결과를 예측하시오.

// main2.c파일
#include<stdio.h>
#include "myheader2.h";
int gNumber = 20;

int main(void){

	int a = 10;
    int result;
    printf("전역변수 gNumber값은 %d이다.\n", gNumber);
    result = Sum(a);
    printf("함수 Sum() 실행 결과 값은 %d이다.\n", result);
    printf("전역변수 gNum 값은 %d이다.\n", gNumberl);
	return 0;
}

// myheader2.h파일
int Sum(int a);

// func2.c파일
int Sum(int a){
	gNumber += a;
	return gNumber;
}

수정

// main2.c 파일
#include <stdio.h>
#include "myheader2.h"
#pragma warning(disable:4996)

int gNumber = 20; // 초기값을 지정함

int main(void) {
    int a = 10;
    int result;

    printf("전역변수 gNumber값은 %d이다.\n", gNumber);
    result = Sum(a);
    printf("함수 Sum() 실행 결과 값은 %d이다.\n", result);
    printf("전역변수 gNumber 값은 %d이다.\n", gNumber);
    return 0;
}

// myheader2.h 파일
extern int gNumber;
int Sum(int a);

// func2.c 파일
#include "myheader2.h"

int Sum(int a) {
    gNumber += a;
    return gNumber;
}

예상결과

20

30

30

 

01 전역변수와 외부 정적 변수의 공통점과 차이점은 무엇인가?

 - 전역변수 : 함수 외부에서 선언된 변수로 전역변수는 변수가 선언된 파일이나 다른 파일에서도 사용할 수 있으며 메모리의 생명력은 프로그램이 종료될 때 까지이다.

 - 외부정적변수 : 외부정적변수는 전역변수와 달리 정적 변수로 선언된 파일에서만 사용할 수 있고 다른 파일에서는 사용할 수 없다.

 

02 지역변수와 내부 정적 변수의 공통점과 차이점은 무엇인가?

 - 지역변수 : 변수가 선언된 함수나 블록에서만 사용할 수 있는 변수로 함수나 블록이 시작될때 메모리에 생겼다가 함수나 블록이 종료되면 사라진다.

 - 내부정적변수 : 함수의 내부에서 선언하여 사용하고 변수값이 소멸되지 않고 계속 보존되기 때문에 지역변수 영역에서 쓰면서 프로그램이 종료될 때까지 값을 보존하고 싶은 경우에 사용한다.

 

03 다음 프로그램의 출력 결과를 예측하시오.

#include<stdio.h>

int number = 1;
int main(void) {

	int number = 10;
	printf("Number값은 %d이다.\n", number);

	{
		int number = 30;
		printf("Number값은 %d이다.\n", number);
	}

	{
		printf("Number값은 %d이다.\n", number);
	}

	printf("Number값은 %d이다.\n", number);

	return 0;
}

예상값 : 10 30 10 10

 

04. 다음 프로그램의 오류를 수정하시오.

1)

#include<stdio.h>

int main(void) {

	int value = 10;
	gVal += value;
	printf("gVal값은 %d이다.\n", gVal);

	return 0;
}
int gVal = 10;

수정후

#include<stdio.h>

int gVal = 10;
int main(void) {

	int value = 10;
	gVal += value;
	printf("gVal값은 %d이다.\n", gVal);

	return 0;
}

 

2) 

#include<stdio.h>

static int Number = 1;
int main(void) {

	int Number = 0;
	int register = 1;

	for (; a < 6; a++) {
		Number += a;
		printf("1에서 5까지의 합은 %d이다.\n", Number);
	}

	return 0;
}

수정후

#include<stdio.h>

static int Number = 1;
int main(void) {

	int Number = 0;
	int reg = 1;

	for (reg; reg < 6; reg++) {
		Number += reg;
		printf("1에서 5까지의 합은 %d이다.\n", Number);
	}

	return 0;
}

 

05 키워드 extern은 어떤 경우에 사용하는지 설명하시오.

 - extern : 전역변수가 선언된 파일 외의 다른 파일에서 그 전역변수를 사용하려면 키워드 extern으로 자료형과 변수명을 변수 사용전에 기록해야 한다. extern으로 선언된 변수는 다른 곳에서 전역 변수로 선언되었다는 것을 알려준다.

 

 

 

728x90
반응형
LIST