포인터(4)
-
[C++] 래퍼런스 (vs. 포인터)
포인터 및 래퍼런스 문법 요약• 자료형* 변수명; ➜ 포인터 변수 선언 (자료형* 타입의 변수)• *포인터변수; ➜ 포인터로 주소 역참조 (포인터 변수에 저장되어 있는 주소로 역참조 한다.)• &변수; ➜ 변수의 주소값 (본인의 주소값을 반환)• 자료형& 변수명; ➜ 래퍼런스 변수 선언원본에 접근할 수 있는 방법인 포인터 말고도 C++에서 래퍼런스가 추가됐다.래퍼런스(Reference) `&` • C++에 추가된 기능으로, 포인터와 유사하다.• 참조한 원본을 전달한다.• 참조 변수를 통해서 직접적으로 원본을 수정할 수 있다.래퍼런스를 사용하는 이유크기가 큰 원본을 그대로 전달하면 복사 비용이 많이 든다.포인터 변수는 주소를 통해서 접근하기 때문에 원본의 크기는 고정적이다.그래서 비용을 줄이기 위해 래퍼런..
2024.04.01 -
[C++] void 포인터(void*)
void• 함수에 반환 타입이 없을 때 사용void Func(){ int a = 0;}void*• 포인터가 가리키는 곳의 타입(자료형)이 정해지지 않았을 때 사용한다.가능불가능• 모든 타입의 변수(주소) 저장• 역참조• 주소 연산▶ 가능void* pVoid = nullptr;`pVoid`가 가리키는 곳의 타입이 정해지지 않았기 때문에 변수(주소)가 어떤 타입이든 다 저장할 수 있다.즉, int형이든 double형이든 상관이 없다는 뜻이다.int main(){ // 자료형* int* pInt = nullptr; char c = 0; pInt = &c; // 오류 // void* void* pVoid = nullptr; int i = 0; float f = 0.f; dou..
2024.03.14 -
[C++] 문제 풀어보기[포인터, 변수] (풀이 및 설명 포함)
아래 링크 클릭 시 해당 본문으로 이동포인터 문제나의 문제 풀이정답 및 문제 풀이변수 문제나의 문제 풀이(=정답 및 문제 풀이)주소로 값 변경하기포인터전체 코드#include int main(){ // 1번 문제 short sArr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int* pI = (int*)sArr; int iData = *((short*)(pI + 2)); printf("1번 문제 정답 : %d\n", iData); // 2번 문제 char cArr[2] = { 1, 1 }; short* pS = (short*)cArr; iData = *pS; printf("2번 문제 정답 : %d\n", iData); retur..
2024.03.13 -
[C++] 포인터(Pointer), 포인터 배열
아래 링크 클릭 시 해당 본문으로 이동포인터포인터 배열포인터• 주소를 가리키는(저장하는) 변수• 포인터 변수라고도 한다.포인터라는 개념은 C, C++에 있고 다른 언어에는 없다.• 포인터가 가리키는 곳을 해당 포인터 변수의 자료형으로 해석한다. ex) int 포인터 변수가 가리키는 곳을 int로 해석한다.포인터의 기능• 주소를 가리킬 수 있고 주소를 받는 변수를 선언할 수 있다.• 주소 변수를 이용하여 내가 알고 있는 주소로 접근하고 값을 직접 수정할 수 있다.※ 주소 변수는 다른 것을 저장할 수 없고 주소만 저장할 수 있다.주소메모리 안에 있는 데이터의 위치를 의미하는 값이다.위치값이 필요한 이유위치가 어딘지도 모르는데 아무 데나 넣을 수는 없다.어떤 공간에 값을 넣을 때 그 위치가 어딘지를 알아야 ..
2024.03.12