[C++] C++문법 공부하기 포인터고급부분/const 예약어-2
본문 바로가기

C#

[C++] C++문법 공부하기 포인터고급부분/const 예약어-2

728x90
반응형

오늘은 저번에 이어 C++포인터 고급부분과 const예약어를 공부해보겠습니다.

 

포인터 배열을 전달받는 함수

포인터 배열의 시작주소는 포인터의 포인터 즉, 2차원 포인터이므로 포인터배열을 매개변수로 하는 함수의 형식 매개변수 자료형은 2차원 포인터여야한다.

 

포인터배열을 매개변수로 사용하는 함수

#include<iostream>
using namespace std;

void print_String(char** pptr, int n) {
for (int i = 0; i < n; i++) {
cout << pptr[i] << endl;
}
}

void main() {
char* ptr[3] = {"tiger","rabbit","cow"};
print_String(ptr, 3);
}

결과

매개변수가 있는 main함수의 형태

#include<iostream>
using namespace std;

void main(int argc, char* argv[]) {
cout << "명령행에입력한 문자열의 개수=" << argv << endl;
cout << ">>명령행에 입력한 문자열<<" << endl;
for (int i = 0; i < argc; i++) {
cout << "argv[" << i << "]=" << argv[i] << endl;
}
}

소스를 입력하고 프로젝트->~~~속성->

디버깅-> 명령인수 입력

 

출력

 

 

 

함수를 가르키는 포인터

우선 함수의 포인터를 선언하는 방법은

int (*pf)(int);

pf는 함수의 주소값을 담는 포인터 변수 

1. 정수 형태의 매개변수 하나를 갖고

2. int형을 결과값으로 되돌린다.

 

함수포인터를 사용해서 함수 호출하기

#include<iostream>
using namespace std;
void (*pf)(void);
void one() {
cout << "one" << endl;
}
void two() {
cout << "two" << endl;
}
void three() {
cout << "three" << endl;
}
void main() {
pf = one;
pf();
pf = two;
pf();
pf = three;
pf();
}

 

함수 포인터를 사용해서 상황에 따른 서로 다른 함수 호출하기

#include<iostream>
using namespace std;
void (*pf)(void);
void one() {
cout << "one" << endl;
}
void two() {
cout << "two" << endl;
}
void three() {
cout << "three" << endl;
}
void main() {
int num;
while (1) {
cout << "0부터 3사이의 숫자를 입력하되 끝내려면 0입력=>";
cin >> num;
switch (num) {
case 0:cout << "종료" << endl;
return;
case 1: pf = one;
pf();
break;
case 2:pf = two;
pf();
break;
case 3:pf = three;
pf();
break;
}
}
}

 

 

이상으로 포스팅 마무리하겠습니다.

반응형