Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 언리얼
- 배열문제
- python
- 이득우
- visualstudio2022
- 게임만들기
- 공부
- c++class
- 표창던지기
- 3차원배열
- 화살표 함수
- Unity
- 그림자 효과
- uidesign
- C++
- 파이썬
- 화살피하기
- 가변배열
- 화살표 메서드
- 셰이더
- 비주얼스튜디오
- IMGUI
- rendermonkey
- swipe
- premake5
- 다중상속
- 렌더몽키
- c#
- 이득우언리얼
- 유니티
Archives
- Today
- Total
신입 개발자 공부 과정
C언어 - 포인터(1) (Pointer), &연산자, *연산자 본문
포인터 = 특정한 데이터를 보관하는 변수
그렇다면 포인터는 어떤 특정한 데이터를 보관하는 것일까?
특정한 데이터가 저장된 주소 값이다.
그런 포인터에도 형(type)이 있는데,
정의는 (형)* (포인터 이름)으로 한다.
int* pointer; //int형 데이터의 주소값을 저장하는 변수 pointer
정의를 했으면 값을 집어넣어야 하는데 그건 바로
& 연산자를 사용하면 된다. 여기서 사용하는 기존 & 연산자와 다른 단항 연산자로 사용방법이 다르다.
& (주소 값을 계산할 데이터)로 표시해주면 된다.
#include <stdio.h>
int main() {
int a = 2;
printf("%p \n", &a);
return 0;
}
결과 값=
000000B1973CF664 //%p를=16진수 형태로 출력하라고 하여서 16자리인 16진수로 출력되었다)
고로 포인터에 적용시켜보면
#include <stdio.h>
int main() {
int* pointer;
int a = 2;
pointer = &a;//pointer는 a의 주소값이다
printf("포인터 pointer에 들어 있는 주소값은=%p \n", pointer);
printf("int 변수 a가 저장된 주소값은=%p \n", &a);
return 0;
}
결과 값=
위와 같이 출력되는 것을 확인할 수 있다.
한번 정의 된 변수의 주소 값은 바뀌지 않기 때문이다.
*연산자= 주소값에서 데이터를 불러오는 연산자 &연산자의 반대
#include <stdio.h>
int main() {
int* p;
int a = 2;
p = &a;
printf("%d\n", a); //데이터
printf("%d\n", &a);//주소 값
printf("%d\n", p);//주소 값
printf("%d\n", *p);//주소 값에 들어있는 데이터
return 0;
}
포인터에는
pointer *p;. 와 같이 pointer를 타입으로 사용하지 않는데 그런 이유는
컴퓨터가 *p의 메모리에서 몇 바이트를 읽어들어야 할지 알지 못하기 때문이다.
고로 int *p와 같이 사용하여 정확히 4바이트를 읽을 수 있게 해준다.
'C > 공부' 카테고리의 다른 글
C언어 - 함수 (0) | 2022.02.28 |
---|---|
C언어 - 포인터(2) 상수포인터 (0) | 2022.02.22 |
C언어 - 다차원 배열 (0) | 2022.02.05 |
C언어 - 배열에 숫자를 입력 받고 높은 순서대로 출력하기 (0) | 2022.02.04 |
C언어 - 상수(Constant) 변하지 않는 값 (0) | 2022.02.04 |