7. 함수 - C++의 프로그래밍 모듈

2023. 7. 10. 00:02·C++/C++
목차
  1. ◆함수에 배열의 길이 까지 전달하는 법
  2. ◆포인터와 const
  3. ◆함수와 구조체
  4. ◆함수와 array 
  5. ◆다중 재귀 호출
  6. ◆함수 주소 얻기
  7. ◆함수를 지시하는 포인터
  8. ◆pa와 &pa의 차이
  9. ◆자동 형 변환 auto
  10. ◆포인터를 이용한 함수 사용

◆함수의 자료형

일반적으로는 함수는 자신의 리턴값을 CPU의 지정된 레지스터나 메모리에 복사하는 방법으로 리턴한다.

그러면 함수를 호출한 프로그램이 그 위치에 무엇이 있는 지 조사한다. 그러므로 데이터형을 일치 시켜야한다.

함수 원형은 호출한 프로그램에게 그 위치에 어떤 데이터형이 놓일지 알려 준다. 

 

◆함수에 쓰이는 변수들

●형식 매개변수 (formal parameter)

  • 전달되는 값을 넘겨받는데 쓰이는 변수

●실제 매개변수 (actual argument)

  • 함수에 전달 되는 값

 

◆함수에 배열의 길이 까지 전달하는 법

1. 함수가 배열 원소의 개수를 알 수 있는 방법은 두 번째 매개변수를 통해서이다.

  • void sortArray (int arr[], int size);

2. 또 다른 방법은 두 번째 매개변수를 배열의 끝을 지시하는 포인터를 전달하면 된다.

  • void sortArray(int * arr, int * arr+10);

 

- 포인터 *arr이 있을 때 arr+4 는 &arr[4]와 같은것을 의미한다.

- 함수의 매개변수 앞에 const를 작성 해 주면, 매개변수를 사용해 그 데이터를 변경할 수 없다.

 

 

◆포인터와 const

1. 상수 객체를 지시하는 포인터를 만드는 것

  • 포인터를 사용해 원본의 값을 바꿀 수 없다.
  • const int * pt = &age;

2. 포인터 자신을 상수로 만드는 것

  • pt가 age만을 가르키게 고정한다.
  • int * const pt = &age;

 

★const int * const pt = &age도 가능하다

 

- const 변수는 일반 포인터에는 대입이 불가능하다.(const 포인터에만 가능하다)

- const는 한다리를 건너는 간접 지시의 경우에만 동작한다.

  • (=배열의 원소는 기본형이여야 한다. 포인터이면 안된다.)

 

◆함수와 구조체

  • 함수는 구조체를 변수로 사용하고 반환할 수 있다.
  • 구조체의 주소를 전달하여, 구조체의 내용에 접근하는 포인터를 이용하는 방식을 선호한다.(구조체의 크기가 클 수 있어서)

◆함수와 array 

  • void show(std::array<double,4> da) : da객체
  • void fill(std::array<double,4> *pa) : pa 객체에 대한 포인터

 

◆다중 재귀 호출

  • 재귀 호출은 하나의 작업을 서로 비슷한 두 개의 작은 작업으로 반복적으로 분할해 강면서 처리해야 하는 사황에서 특별히 유용하다. 이러한 재귀적인 접근을 분할 정복(divde and conquer) 전략이라고 한다.

 

◆함수 주소 얻기

- 뒤에 괄호를 뺴고 함수 이름만 사용하면 된다.

  • hamsu(getSince);
  • hamsu에 getSince()의 주소를 전달한다.

 

◆함수를 지시하는 포인터

●가르킬 함수의 반환형이랑 같게 선언하며, 매개변수도 같게 가로에 넣어준다.

  • double (*pf)(int);
  • 함수를 지시하는 포인터 선언에서는 연산자 우선순위 때문에 *pf를 괄호로 둘러싸야 한다.
  • *pf(int)는 pr()가 포인터를 리턴하는 함수가 되버린다.

 

◆포인터를 사용하여 함수 불러내기

double pam(int);
double (*pf)(int);
pf = pam;
double x = pam(4);
double y = (*pf)(5);	//= pf(5)

 

◆pa와 &pa의 차이

- pa는 배열의 첫 번째 원소의 주소이다. (&pa[0])(단일 포인터 주소이다.)

- &pa는 전체 배열의 주소이다. (+1을 하면 전체 배열의 크기만큼 지나간다.)(**pa로 값을 확인할 수 있다.)

 

 

◆자동 형 변환 auto

- 알맞은 형으로 변환 시켜준다.

- 복잡한 형에 적용하기 좋다. 단, 대입연산자의 값을 잘 확인해야 한다.

 

 

◆포인터를 이용한 함수 사용

-추후 작성...

 

'C++ > C++' 카테고리의 다른 글

9. 메모리 모델과 이름 공간  (0) 2023.07.14
8. 함수의 활용 ★  (0) 2023.07.12
6장 조건문  (0) 2023.07.02
5장 반복문과 cin 메모  (0) 2023.07.01
4장 포인터, 배열, 포인터 연산 메모  (0) 2023.06.26
  1. ◆함수에 배열의 길이 까지 전달하는 법
  2. ◆포인터와 const
  3. ◆함수와 구조체
  4. ◆함수와 array 
  5. ◆다중 재귀 호출
  6. ◆함수 주소 얻기
  7. ◆함수를 지시하는 포인터
  8. ◆pa와 &pa의 차이
  9. ◆자동 형 변환 auto
  10. ◆포인터를 이용한 함수 사용
'C++/C++' 카테고리의 다른 글
  • 9. 메모리 모델과 이름 공간
  • 8. 함수의 활용 ★
  • 6장 조건문
  • 5장 반복문과 cin 메모
메카인
메카인
  • 메카인
    메카인의 지식창고
    메카인
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 공부
        • TIL(Today I Learn)
        • TIL
        • 백준(C++)
        • Python
        • 알고리즘
        • 프로젝트 회고
      • C++
        • C++
        • C++ STL
        • C,C++ mCoding yotube
      • 게임개발
        • 언데드서바이벌_골드메탈_클론코딩
        • 3D_골드메탈_클론코딩
        • 유니티_문제해결
        • 게임 수학
      • Unreal 공부
        • UE5 GameDev
        • Unreal Engine 4 C++ The Ult..
      • 교재 문제 풀이
        • 운영체제
      • 정보처리기사
        • 정처기 요약
        • 정처기 오답노트
      • 학교수업
        • 데이터베이스
        • 프로그래밍 언어론
        • 리눅스 시스템
        • 네트워크
      • 일상
        • 주식
        • 독서
        • 일기
      • (비공개 전용)
        • memory
        • Build
        • OOP
        • Smart Pointer
        • lamda
        • 게임 수학
        • 모던 C++
        • 모던 C++ STL
        • 모던 C++ Concurrency, Paralle..
        • 책
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 블로그 관리
  • 링크

  • 공지사항

    • 공지사항 - 인생과 블로그의 목표
  • 인기 글

  • 태그

    ~
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메카인
7. 함수 - C++의 프로그래밍 모듈
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.