Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

C++프로그래밍 4주차 정리 본문

1-2/C++프로그래밍

C++프로그래밍 4주차 정리

김브래 2022. 9. 22. 21:28

C++에서는 문자열을 표현할 때

const char* 대신

string 이라는 자료형을 쓸수 있다.

 

대신에 using namespace std; 를 써야한다.

한마디로 std를 써야된다.

 

함수 선언이 귀찮다면

함수 선언 자리에 함수 정의를 하면

선언과 정의를 같이 할 수 있다. (비추천)

 

그리고 내가 직접 헤더파일을 만들고 include 할수 있는데

헤더.h 라는 파일이 있으면

표준 헤더 파일이 아니기 때문에

include "헤더.h" 라고 써야한다.

 

재귀함수는 자기 자신을 호출하는 함수를 말한다.

 

실매개변수는 함수를 호출할 때 사용하는 매개변수 이고

형식매개변수는 함수 정의에서 사용하는 매개변수 이다.

 

call by value는 실매개변수의 값을 형식매개변수로 전달하는 것 이고

call by reference는 실매개변수의 주소를 형식매개변수로 전달하는 것 이다.

(call by reference는 아직 배우지 않았다.)

 

반복되는 부분은 함수로 구현하면

더 간략한 방식으로 프로그램을 구성할 수 있다.

 

지역변수와 전역변수

 

지역변수는 함수 내부 블록 안에서만 접근 가능하고

초기값이 없으면 실행이 안되지만

전역변수는 프로그램 어디서든 접근이 가능하고

초기값이 없으면 자동으로 0으로 초기화가 된다.

 

지역변수와 전역변수는 변수의 선언 위치에 따라 결정됨

 

기억클래스 auto, static

 

static 변수의 특징

1. 프로그램이 종료될 때까지 값을 유지

2. 처음 실행시 한번만 초기화되고 초기화 값이 없으면 0으로 초기화됨

3. 스택이 아닌 정적 데이터 영역을 사용

4. 지역 static변수는 해당 블록 내에서만 접근 가능

 

전역변수는 기본적으로 static변수이다.

 

auto는 생략이 가능하다.

지역변수는 auto변수 이고 초기화하지 않으면 쓰레기 값이 들어간다.

 

C++에서는 auto를 쓰면 오류가 난다.

 

구조체

 

구조체를 만드는 법

 

struct 구조체명 {     //선언

         멤버함수;

         멤버함수;

              ... 

}

 

int main() {

       struct 구조체명 함수명;  //호출

       함수명.멤버함수1 = ?;

       함수명.멤버함수2 = ?;

                  ...

}

C++에서는 메인함수의 struct는 생략가능

------------------------------------------------------------------

과제

 

수업 시간에 실습한 소스 코드

 

#include <iostream>

void double_num(int x); //함수 선언, 원형 (prototype)

int double_num1(int x);

void Brae();

void Home();

int add3(int x, int y, int z);

char vending(int x);

const char* vending1(int x);

int avg3(int x, int y, int z);

 

int main() {

int x;

const char* y;

double a;

 

Brae(); //함수 호출

std::cout << "하하하\n";

Home();

double_num(3);

std::cout << double_num1(10) << std::endl;

x = double_num1(10);

std::cout << x << std::endl;

x = add3(1, 2, 3);

std::cout << x << std::endl;

x = vending(2);

std::cout << x << std::endl;

y = vending1(2);

std::cout << y << std::endl;

a= avg3(2, 3, 3);

std::cout << a << std::endl;

}

 

void double_num(int x) { //함수 정의

std::cout << 2 * x;

}

int double_num1(int x) {

return x * 2;

}

void Brae() {

std::cout << "제 이름은 김동현 입니다.";

}

void Home() {

std::cout << "I Wanna Go Home";

}

int add3(int x, int y, int z) {

return x + y + z;

}

char vending(int x) {

if (x == 1)

return 'A';

else

return 'B';

}

const char* vending1(int x) {

if (x == 1)

return "커피";

else

return "콜라";

}

int avg3(int x, int y, int z) {

return (x + y + z) / 3.0;

}

 

#include <iostream>

using namespace std;

string vending(int x)

{

if (x == 1) return "커피";

else return "유자차";

}

int main()

{

cout << vending(1);

return 0;

}

 

재귀함수 : 함수 안에서 자기 자신을 호출하는 함수

실매개변수: 함수를 호출할 때 사용하는 매개면수

형식매개변수: 함수 정의에서 사용하는 매개변수

 

call by value 값을 형식매개변수로 전달

call bt reference 주소를 형식매개변수로 전달

#include <stdio.h>

void add(int x, int y); //함수 선언

int main(void)

{

int num1 = 1, num2 = 2, num3 = 3;

int num4 = 4, num5 = 5, num6 = 6;

 

add(num1, num2); //실매개변수, 함수 호출

add(num3, num4);

add(num5, num6);

return 0;

}

void add(int x, int y) //함수 정의, 형식매개변수

{

printf("두 수 %d%d를 더한 결과는 %d입니다.\n", x, y, x + y);

}

 

#include <iostream>

 

int main()

{

int x = 10; //메인함수 안에 있는 변수=지역 변수

std::cout << "Hello World!\n";

 

#include <iostream>

 

int x; // 메인함수 밖에 있는 변수 = 전역변수, 초기값이 없으면 자동으로 0으로 초기화

int main()

{

std::cout << "Hello World!\n";

}

 

#include <iostream>

 

int x=10;

int main()

{

int x = 5;//전역변수와 지역변수의 이름이 같으면 지역변수가 우선이다

std::cout << "Hello World!\n";

}

 

#include <stdio.h>

void sub(void);

int main(void)

{

sub();

sub();

sub();

return 0;

}

void sub(void)

{

int x = 10; //auto는 생략가능

static int y = 10; //실행시 이 문장은 실행하지 않음, 컴파일시 이미 결정됨

printf("x=%d, y=%d\n", x, y);

x++;

y++;

}

static 변수의 특징

1. 프로그램이종료될 때까지 값을 유지

2. 처음 실행시한번만 초기화되고 초기화 값이 없으면 0으로 초기화됨

3. 스택이 아닌 정적 데이터 영역을 사용

4. 지역 static변수는 해당 블록 내에서만 접근 가능

 

#include <iostream>

struct Man { //구조체를 만드는 틀은 struct 이름 중갈호와 세미콜론을 붙인다.

int age; //멤버

double weight, height;

char ban;

};

 

int main()

{

Man brae; //struct Man은 새로운 자료형,brae는 함수명이다 / C++에서는 struct 생략 가능

brae.age = 22; //brae는 객체

brae.weight = 79.2;

brae.height = 179.3;

brae.ban = 'A';

std::cout << brae.age << " " << brae.weight << " " << brae.height << " " << brae.ban << std::endl;

 

Man brae1;

brae1.age = 12;

brae1.weight = 92.2;

brae1.height = 120.1;

brae1.ban = 'B';

std::cout << brae1.age << " " << brae1.weight << " " << brae1.height << " " << brae1.ban << std::endl;

 

Man brae2;

brae2 = brae;

std::cout << brae2.age << " " << brae2.weight << " " << brae2.height << " " << brae2.ban << std::endl;

//구조체를 복사하면 멤버 함수들도 한번에 복사 가능

}

 

 

'1-2 > C++프로그래밍' 카테고리의 다른 글

C++프로그래밍 7주차 강의 정리  (0) 2022.10.13
C++프로그래밍 6주차 강의 정리  (0) 2022.10.06
C++프로그래밍 3주차 정리  (0) 2022.09.15
C언어 복습 정리  (0) 2022.09.12
C++프로그래밍 2주차  (0) 2022.09.08