자료형 *(포인터_변수_이름);
int *ptr;
ptr = ∑
//한줄로
int *ptr = ∑
int *p = new int[n];
for int i = 0; i < n; i++){
cin >> p[i]; //배열
cin >> *(p + i); // 포인터
a[i] = i;
*(a + i) = i;
}
delete []p;
#include <vector>
using namespace std;
vector<int> v = {1,2,3};
v.push_back(4);
//전달
void func(vector<int>& v) {
v.push_back(10);
}
//호출
vector<int> v;
func(v);
//전달
//void func(vector<int> v) : 값 복사
void func(vector<int>* v) { // 원본 사용
v->push_back(10);
}
//호출
vector<int> v;
func(&v);
& 역할
&a 주소를 가져옴
int& a 참조(별명) 선언
//arr[] == int* arr
//주소 전달 → 원본 바뀜
#include <iostream>
using namespace std;
void change(int arr[], int size) {
arr[0] = 100; // 원본 변경
}
int main() {
int arr[3] = {1, 2, 3};
change(arr, 3);
cout << arr[0]; // 100
}
#include <iostream>
using namespace std;
void change(int arr[], int size) {
arr[0] = 100; // 복사본만 변경
}
int main() {
int arr[3] = {1, 2, 3};
int copy[3];
for(int i = 0; i < 3; i++) {
copy[i] = arr[i];
}
change(copy, 3);
cout << arr[0]; // 1 (원본 유지)
}
#include <iostream>
#include <vector>
using namespace std;
void change(vector<int>& v) {
v[0] = 100; // 원본 변경
}
int main() {
vector<int> v = {1, 2, 3};
change(v);
cout << v[0]; // 100
}
#include <iostream>
#include <vector>
using namespace std;
void change(vector<int> v) {
v[0] = 100; // 복사본만 변경
}
int main() {
vector<int> v = {1, 2, 3};
change(v);
cout << v[0]; // 1
}