오늘은 C++ 문법 중 함수 / 기억클래스 / 함수에 대해 공부했습니다.
책은 C++하이킹책을 보며 공부했습니다..
먼저 함수의 기본형식을 알아보겠습니다.
자료형 함수명(매개변수 리스트)
{
변수 선언;
문장;
return 결과값;
}
함수는 3가지로 나눌 수 있는데
1. 매개변수와 반환값이 모두 없는 함수
2. 매개변수만 있고 반환값이 없는 함수
3. 매개변수와 반환값이 모두 있는 함수
예시
매개변수도 반환값도 없는 함수 작성
#include<iostream>
using namespace std;
void show() {
cout << "********************\n";
return;
}
int main() {
cout << "함수 호출 하기 전\n";
show();
show();
cout << "함수 호출 한 후\n";
}

2. 매개변수만 있고 반환값이 없는 함수
#include<iostream>
using namespace std;
void sum(int x, int y) {
cout << "x+y=" << x + y << "\n";
}
void main() {
int a = 10, b = 20;
sum(a, b);
sum(4, 5);
}

3. 매개변수와 반환값이 모두 있는 함수
절댓값을 구하는 함수 작성하기
#include<iostream>
using namespace std;
int ABS(int x) {
int y; //절댓값 저장
if (x < 0)
y = -x;
else y = x;
return y;
}
int main() {
int a, result;
cout << "정수값하나를 입력하세요->";
cin >> a;
cout<<"\n";
cout << "구한 절댓값은 ";
cout << ABS(a) << "이다\n";
}

함수 선언만하고 함수호출하기
최댓값을 구하는 함수 작성하기
#include<iostream>
using namespace std;
int max(int,int);
int main() {
int a, b;
cout << "정수값을 두 개 입력하세요=>";
cin >> a >> b;
cout << "\n최댓값=>" << max(a, b) << "\n";
}
int max(int x, int y) {
return((x > y) ? x : y);
}

기억클래스
기억클래스의 종류
auto(자동변수)
유효범위 : 블록 내 생존기간 : 일시적 메모리 : 스택 초기화 여부 : 쓰레기 값
extern(외부변수)
유효범위 : 프로그램 내 생존 기간 : 영구적 메모리 : 메모리 초기화 여부 : 숫자 0
static(정적변수)
유효범위 : 내부 : 블록 내 외부 : 모듈 내 생존 기간 : 영구적 메모리 초기화 여부 : 숫자 0
register(레지스터 변수)
유효범위 : 블록 내 생존 기간 : 일시적 메모리 : CPU 내의 레지스터 초기화 여부 : 쓰레기 값
1. 자동변수
지금까지 사용한 변수 , 즉 가장 일반적으로 사용하는 형태가 자동변수다
자동변수는 auto라는 기억클래스를 붙이지 않고 생략한 채로 사용한다.
자동변수 성격 알아보기
#include<iostream>
using namespace std;
int main() {
int a = 10;
cout << "a=" << a << endl;
{
int a = 20;
cout << "a=" << a << endl;
{
a += 20;
cout << "a=" << a << endl;
}
cout << "a=" << a << endl;
}
cout << "a=" << a << endl;
}

지역변수와 전역변수
블록(함수)안에 선언된 변수를 '지역변수'라고 한다.
함수외부에서 변수를 선언하면 '전역변수'라 한다
정적변수 = static
정적변수와 자동변수의 차이점 살펴보기
#include<iostream>
using namespace std;
void sub();
void main() {
for (int i = 1; i <= 5; i++) {
cout << i << "========>\n";
sub();
}
}
void sub() {
int a = 0;
static int b = 0;
a += 100;
b += 100;
cout << "auto a=" << a << endl;
cout << "static b=" << b << endl;
}

소스파일 3개로 구성된 프로젝트 작성하기
프로젝트에 소스 추가하는 방법
솔루션탐색기 -> 소스파일 -> 새항목 -> cpp파일만들기




레지스터 변수의 예 살펴보기
#include<iostream>
using namespace std;
long int power(register int x, register int n);
void main() {
int a = 2, b = 5;
cout << a << "^" << b << "=>" << power(a, b) << "\n";
}
long int power(register int x, register int n) {
register int k;
long int p = 1;
for (k = 1; k <= n; k++)
p *= x;
return p;
}

이상으로 C++포스팅을 마치겠습니다
'C#' 카테고리의 다른 글
| [C++]C++문법 1차원배열 / 2차원배열 공부하기 (0) | 2026.02.01 |
|---|---|
| [C++]C++문법 포인터공부하기 (0) | 2026.01.27 |
| [C++]C++문법 공부(while문/do-while문/break문/continue문/goto문/무한루프) (0) | 2026.01.23 |
| [C++]C++문법공부 제어문-선택문(if/if-else-/switch)반복문(for문/다중for문) -1 (2) | 2026.01.20 |
| [C++]C++문법 공부하기 기본연산자(산술연산자,관계연산자,논리연산자,증감연산자,비트단위연산자,시프트연산자,조건연산자sizeof연산자) (1) | 2026.01.18 |