학부내용 예습/[ 2021 겨울 ] C++

[ C++ ] 5강. 포인터 배열, 문자열 배열, 참조자, 함수

haena02 2022. 1. 26. 00:39
반응형

포인터 배열

 

포인터 배열 : 포인터 변수들을 배열 요소로 갖는 배열

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;  }

 

 

 

 

 

  

 

                                                                                                                                                                                   

 

 

 

반응형