일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ruby
- 건담베이스
- 비즈니스일본어
- 반다이몰
- 単語
- java
- springboot
- DART
- 日本語
- C로 시작하는 컴퓨터 프로그래밍4판
- 一日一つメソッド
- rails7
- Flutter
- 연습문제
- jsp
- javascript
- rails
- 건담
- Python
- 디지몬
- Web
- 일본어
- nico
- 인프런
- html
- CSS
- vscode
- メソッド
- 자바
- Spring
Archives
- Today
- Total
AR삽질러
C로 시작하는 컴퓨터 프로그래밍4판 - 9장 변수영역 본문
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
'C' 카테고리의 다른 글
C로 시작하는 컴퓨터 프로그래밍4판 - 11장 구조체와 열거형 (0) | 2023.06.22 |
---|---|
C로 시작하는 컴퓨터 프로그래밍4판 - 10장 Pointer (0) | 2023.04.25 |
C로 시작하는 컴퓨터 프로그래밍4판 - 8장 함수 (0) | 2023.04.02 |
C로 시작하는 컴퓨터 프로그래밍4판 - 7장 배열 (0) | 2023.03.31 |
C로 시작하는 컴퓨터 프로그래밍4판 - 6장 반복문 (0) | 2023.03.27 |