도서 : 초보자를 위한 C++ 프로그래밍(성안당)

지음 : 강성수 지음


  • 포인터와 1차원 배열
    • 형식 : 배열명[첨자]는 *(배열명 + 첨자)와 같은 결과를 갖는다.
    • str[3]; // 1차원 배열 -> *(str + 3); //1차원 배열을 포인터 수식으로 표현
    • int array[3] = { 5, 10, 15}; -> int* pt; -> pt = array; //array는 배열명이므로 &array[0]과 동일
  • 포인터와 2차원 배열
    • 형식 : 배열명[첨자1][첨자2]는 *(*(배열명 + 첨자1) + 첨자2)로 변경한다.
    • int a[2][3] = ... ; -> int (*p)[3]; //2차원 배열의 포인터 선언 -> p = a; //포인터 초기화
  • 3차원 배열 역시 위와 비슷하게 int (*p)[2][3]; 처럼 늘려주면 된다.
  • p, &p[0], *p, **p 모두 시작 번지 값으로 같다.

  • 포인터와 함수
    • 포인터를 사용하면 다른 함수의 변수를 간접으로 접근할 수 있으므로 함수에 변수나 배열을 전달하기도 하고, 처리한 결과값을 반환받을 때 사용한다.
    • 실습 - 하나의 변수를 인자로 한 함수 사용하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
void chonge(int* p); //함수 원형
 
int main() {
    int x = 1004;
 
    chonge(&x);
    cout << "chonge() 함수 호출 후 변수 x의 값 : " << x << endl;
 
    return 0;
}
 
void chonge(int* p) {
    cout << "chonge() 함수 : " << *<< endl//main() 함수의 x값 출력
    *= 375// x값을 변경
}
cs
    • 결과

  • 함수 포인터
    • 프로그램을 작성하여 컴파일하고 링크하여 실행 파일을 만들고 실행하면 프로그램의 기계어로 번역된 모든 부분이 메모리 영역에 저장되고 실행된다.
    • 함수명은 함수 포인터가 되는 것으로, 함수를 호출할 때 함수명을 사용하는 것이다. 함수의 시작 주소를 갖는 포인터를 사용하면 해당 함수를 호출할 수 있다.
    • 예제 : 함수 포인터 사용
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
#include <iostream>
using namespace std;
 
int add(int x, int y);
int mult(int x, int y);
void fn(int(*fp)(int x, int y));
 
int main() {
    fn(add);
    fn(mult);
 
    return 0;
}
 
void fn(int(*fp)(int x, int y)) {
    int a = 3, b = 7, dap;
 
    dap = fp(a, b);
    
    cout << "결과 = " << dap << endl;
 
}
 
int add(int x, int y) {
    return x + y;
}
 
int mult(int x, int y) {
    return x * y;
}
cs
    • 결과

 

'C++ 개념' 카테고리의 다른 글

inline 함수  (0) 2019.03.01
공용체  (0) 2019.03.01
void * 형 포인터는 캐스트 변환 (타입 *)으로  (0) 2019.02.28
문자열 함수  (0) 2019.02.28
continue문 - 흐름 이동  (0) 2019.02.27

+ Recent posts