포인터 배열
포인터 배열 : 포인터 변수들을 배열 요소로 갖는 배열
ex. char* ary[5];
1. 10개의 정수 데이터를 랜덤하게 저장한 후, 정렬해서 출력. 원본데이터는 변경X
#include <iostream>
using namespace std;
void printArr(int* num) {
for (int i = 0; i < 6; i++) {
cout << num[i] << " ";
}
}
int main() {
int num[6] = { 10,50,60,20,5,70 };
int* arr[6];
for (int i = 0; i < 6; i++) {
arr[i] = &num[i];
}
cout << "정렬전 : ";
printArr(num);
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j < 6; j++) {
if (*arr[i] <* arr[j]) {
int* temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
cout << "정렬후 : ";
for (int* i : arr) {
cout << *i << " ";
}
return 0;
}
원본데이터는 유지하고 데이터의 주소가 저장되어있는 배열의 순서를 바꾼다.
데이터 값, 주소 값은 모두 유지되고 따로만든 포인터 배열의 순서만 바꿈으로써 원본은 유지된다.
원본을 유지해야할 때 포인터 배열하면 편리
문자열 배열
문자열 배열 char str[] = "Hello";
- 문자가 맘에 안들면 바꿀 수 있음
문자열 포인터 배열 char *str = "Hello";
- 문자를 바꾸지 못하고 가르키는 문자 자체를 바꿔야함
- 문자 하나하나를 가져올 수는 있음 str+n
문자열 다차원 배열 char menu[5][10] = { - , - , - , - , - };
- 길이에 상관없이 5개의 단어 하나당 10씩 주어짐
문자열 포인터 다차원 배열 char *menu[] = {- , - , - , - , -};
- 긱 딘어에 맞기 칸 생성
- 수정은 불가하지만 문자하나 가져오기 가능
-ex) menu[4][2] 또는 *(*(menu+4)+2)
참조자(&)
int num1 = 100;
int &num2 = num1;
//num1 과 num2 는 완전히 같은 값이다.
1) 상수 참조 불가
2) 선언과 동시에 참조 해야함
3) NULL로 초기화불가
주소 VS 참조
앞에 있으면 참조= 뒤에 있으면 주소
포인터 VS 참조
포인터는 원본 변경 NO 참조는 변경 가능
포인터는 공간 생성 참조는 생성 X
함수
오버로딩 - 똑같은 이름의 함수를 여러개 만드는 것, 인자의 개수와 타입으로 구분
디폴트 값 - 인자를 전달하지 않으면 디폴트 값을 인자로 인식, 이를 가지고 있으면 오버로딩 불가
- 일부만 디폴트 값을 줄 수 있지만 왼쪽에서부터(인자를 오른쪽에서부터 읽기 때문)
int MyFun(int num=7){ // 디폴트 값 7
return num+1; }
매크로 함수
#define SQUARE(x) ((x)*(x))
inline 함수
inline int SQUARE(int x){
return x*x; }
'학부내용 예습 > [ 2021 겨울 ] C++' 카테고리의 다른 글
[ C++ ] 7강. 클래스, 객체지향 프로그래밍 (0) | 2022.01.30 |
---|---|
[ C++ ] 6강. 동적할당 (0) | 2022.01.28 |
[ C++ ]4강. 다차원 배열 / 실습 (0) | 2022.01.23 |
[ C++ ] 3강. 배열 / 실습 코드 (0) | 2022.01.04 |
[ C++] 1강 2강. 실습 코드 (0) | 2022.01.03 |