Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] 포인터 vs 배열 본문
#include <iostream>
using namespace std;
void Test(int a)
{
a++;
}
// 배열을 함수 인자로 넘기면, 컴파일러가 알아서 포인터로 치환함 (char[] -> char*)
// 즉 배열의 내용 전체를 넘긴게 아니라, 시작 주소(포인터)만 넘긴 것
// 주소값을 이용하여 원본을 수정함
void Test(char a[])
{
a[0] = 'x';
}
int main()
{
// .data 주소[H][e][l][l][o][][W][o][r][l][d][\0]
// test1[주소] << 64비트 기준 8바이트
// 아무리 저장 값이 늘어나도 포인터 변수 자체의 크기는 주소값이므로 고정됨
// 주소 저장
const char* test1 = "Hello World";
// .data 주소[H][e][l][l][o][][W][o][r][l][d][\0]
// [H][e][l][l][o][][W][o][r][l][d][\0]
// test2 = 주소
// 값이 늘어나면 포인터 하나의 크기만큼 변수의 크기가 계속 늘어남
// const인 문자열 포인터와 다르게 하나하나 값 변경이 가능해짐
// 실질적인 값 저장
char test2[] = "Hello World";
// 포인터는 [주소를 담는 바구니]
// 배열은 그 자체로 같은 데이터끼리 붙어있는 바구니의 모음
// - 다만 배열 이름은 바구니 모음의 시작 주소
int a = 0;
// 호출[매개변수][RET][지역변수(a=0)]함수[매개변수(a=1)][RET][지역변수] 변화 X
Test(a);
cout << a << endl;
// 배열의 시작 주소만 넘김
Test(test2);
cout << test2 << endl;
// 참조와 다르게 배열과 포인터는 실행 동작 자체가 엄연히 다름
return 0;
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] 다중 포인터 (0) | 2022.07.14 |
---|---|
[C++] 로또 번호 생성기 (0) | 2022.07.13 |
[C++] 배열 기초 (0) | 2022.07.11 |
[C++] 포인터 vs 참조 (0) | 2022.07.10 |
[C++] 참조 기초 (0) | 2022.07.10 |