[C++]C++ 함수 , 기억클래스와 변수 공부하기
본문 바로가기

C#

[C++]C++ 함수 , 기억클래스와 변수 공부하기

728x90
반응형

오늘은 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++포스팅을 마치겠습니다

 
반응형