본문 바로가기
반응형

C++/포인터7

[C++] 포인터 변수와 const 포인터 변수에도 const 선언을 하여 상수로 만들 수 있습니다. 이번 글의 목적은 아래 네가지 선언을 구분하는 것입니다. 1) const int a=3; 2) int a=3; const int* pa=&a 3) int a=3; int* const pa=&a 4) int a=3; const int* const pa=&a 1번은 a라는 변수를 변경이 불가능하도록 만든 것입니다. a=5 등 a에 다른 값을 대입할 경우 에러가 발생합니다. 2번은 int* pa 앞에 const가 붙어 있습니다. pa를 상수화 한 것은 아니고 *pa 를 상수화 한 것입니다. 따라서 *pa=5 등 *pa 에 다른 값을 대입할 경우 에러가 발생합니다. 3번은 pa 앞에 const가 붙어 있습니다. pa를 상수화한 것이고, pa에는 .. 2022. 8. 17.
[C++] 배열의 원소를 포인터로 접근하기 ar[i]=*(ar+i) 배열의 원소에 접근하여 값을 변경하는 등의 행위를 포인터를 이용하여 수행하는 방법을 알아봅시다. 배열을 하나 정의합시다. int ar[3]={1,2,3}; 배열의 첫번째 원소에 접근하는 방법은 두 가지가 있습니다. 하나는 배열의 인덱싱을 이용하는 방식입니다. 아래와 같습니다. ar[0] 다른 하나는 포인터를 이용하는 방식입니다. 아래와 같습니다. *ar 아래 코드를 출력해보면 결과가 1로 동일합니다. cout 2022. 8. 12.
[C++] 포인터에서 * 연산자의 두 가지 사용법 *연산자는 두가지 경우에 다른 의미로 사용되기 때문에 많은 분들이 헷갈려 합니다. 오늘은 *연산자의 사용방법을 정리해봅시다. 포인터 변수 p를 하나 정의합시다. int a=3; int* p=&a; p라는 포인터에는 a의 주소값이 저장됩니다. 위 코드에서 *연산자는 포인터 변수를 선언할 때 사용되었습니다. *p 라는 변수가 선언된 것이 아니라 (int*) 라는 자료형인 p라는 변수가 선언된 것입니다. p는 int형 포인터상수입니다. 상수라는 이름이 붙은 이유는 변형이 불가능하기 때문입니다. *는 아래와 같은 상황에서도 사용됩니다. *p=5; *p는 p가 가리키는 주소에 입력된 값을 의미합니다. a에 입력된 값인 5입니다. 정리해봅시다. *연산자는 두가지 역할로 사용됩니다. 1) 자료형 뒤에 붙어서 포인터변.. 2022. 8. 12.
[C++] 포인터에서 덧셈 뺄셈 연산 포인터 변수를 하나 선언해봅시다. int a=3; int *p=&a; p에는 a의 주소가 저장됩니다. 출력하면 아래와 같습니다. 0x7ffdc969234c 만약 p에 1을 더하면 어떤 결과가 발생할까요. 1,2,3을 더하고 출력하면 결과는 아래와 같습니다. 0x7ffc9f9d2a4c 0x7ffc9f9d2a50 0x7ffc9f9d2a54 0x7ffc9f9d2a58 위 값은 16진수입니다. 0x 는 16진수라는 의미입니다. 맨 뒷자리만 보면 주소가 입력된 포인터변수에 1을 더할 때마다 c, 0, 4, 8 로 변하고 있습니다. 16진수에서 c는 12입니다. 12에 4를 더하면 16이 되고 자릿수가 변하므로 첫자리는 0이 됩니다. c,0,4,8은 4씩 증가하는 것을 알 수 있습니다. int로 선언된 포인터변수에.. 2022. 8. 11.
[C++] 변수의 주소는 몇 진수일까 포인터를 이용하여 변수의 주소를 하나 출력해봅시다. #include using namespace std; int main() { int a=3; int *p=&a; cout 2022. 8. 11.
[C++] 포인터에서 p와 *p의 차이 포인터 변수를 하나 선언해봅시다. int a=3; int *p=&a; p에는 a의 주소가 저장됩니다. int *p 에서 *p가 어떤 의미를 갖는 것은 아닙니다. int* 가 의미를 갖습니다. 포인터 자료형이라는 뜻입니다. int* p라고 쓰는 것이 의미를 더 잘 표현합니다. *p 가 단독으로 사용되는 경우도 있습니다. 이때는 p가 가리키는 변수가 됩니다. *p 는 a입니다. 직접 출력하여 확인해봅시다. #include using namespace std; int main() { int a=3; int *p=&a; cout 2022. 8. 11.
[C++] 포인터란 무엇인가 포인터는 변수입니다. 하지만 우리가 일반적으로 알고 있는 변수와는 다릅니다. 이러한 이유 때문에 포인터에 익숙해 지는데 시간이 좀 필요합니다. 지금부터 우리에게 익숙한 변수에서 출발하여 포인터가 무엇인지 배워봅시다. 우리가 일반적으로 알고 있는 변수는 숫자나 문자를 입력할 수 있는 어떤 공간의 이름입니다. 각 변수는 메모리 공간을 갖습니다. 정수형 변수를 선언하고 값을 입력하는 아래 코드를 봅시다. int a=3; 위와 같이 선언할 경우 메모리 공간에 int 자료형의 크기인 4바이트가 할당됩니다. 할당된 4바이트 공간에 3이 입력됩니다. 메모리 공간에서 4바이트 만큼을 정한 뒤 a라는 이름을 붙인 것과 같습니다. 이후 a라는 변수를 사용하게 되는데요. 우리가 a를 사용할 때마다 컴퓨터는 a라는 이름이 붙.. 2022. 8. 11.
반응형