1. 포인터란?
메모리의 주소를 저장하는 공간이며 , 포인터 변수라고도 부른다. 값을 담고있는 게 아니라 메모리 주소를 담고 있는 변수이다.
변수 앞에 *를 붙이면서, 포인터를 만들어 준다.
ex) int *ptr; int* ptr; 동일하다.
포인터를 선언한 후 주소 값 배정해야한다.
& 뒤에 변수 이름을 적으면, 해당 변수 이름의 메모리 주소 값을 나타나게 된다.
int A = 10;
printf("%p \n", &A);
//000000172CDDF7F3
2. 포인터 연산자
1) 주소연산자(&) : 주소 연산자는 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환한다.
#include <stdio.h>
int main(void) {
char last_name [4] ={"kim", "jung", "lee", "choi"};
for (int i=0; i<4; i++){
printf("grade[%d] = %c\n", i, grade[i]);
}
// 배열의 메모리 주소
for (int i=0; i<4; i++){
printf("grade[%d] = %c\n", i, &grade[i]);
}
return 0;
}
2) 참조연산자(*) : 참조연산자는 포인터의 이름이나 주소 앞에 사용하여, 포인터에 가리키는 주소에 저장된 값을 반환한다.
3. 예시(명확히 기억)
// 포인터 변수 Ptr에 변수 A의 메모리 주소를 저장하게 된다.
//포인터 변수 선언
int *Ptr;
//변수 A를 선언하고 값을 10으로 초기화
int A = 10;
//포인터 변수 Ptr에 변수 A의 메모리 주소를 저장
Ptr = &A;
printf(" %d\n", *Ptr);
//10
똑바로 기억
#include <studio.h>
int main(void) {
// 변수 선언
int num = 50;
// 포인터변수 선언과 초기화
int *numberPointer = NULL;
// num의 주소를 numberPointer 포인터변수에 저장
numberPointer = # // 여기 잘봐 numberPoiter앞에 * 없다.
// 일반 변수 num의 값 출력
printf("num = %d\n", num); // num = 50
// num의 주소 값 출력
printf("&num = %x\n", &num); // &num = a3fe23
printf("numberPointer = %x\n", numberPointer); // numberPointer = a3fe23
// numberPointer가 가지고 있는 주소의 데이터 값
printf(*numberPointer = %d\n", *numberPointer); // *numberPointer = 50 여기잘봐
// numberPoiter의 주소
printf("&numberPinter = %x\n", &numberPointer); //&numberPointer = a3fe23
// numberPointer의 주소의 값의 값
printf("**&numberPointer = %d\n", **numberPointer); // **&numberPointer = 50
return 0;
}
'AI(Artificial intelligence) > C,C++ Language' 카테고리의 다른 글
#if vs. #ifdef (0) | 2023.01.11 |
---|---|
#0. C언어 변수 선언 및 자료형 (0) | 2023.01.10 |
# 2. C언어 자주 쓰는 함수 (0) | 2023.01.10 |
C 프로그램 실행과정 (0) | 2023.01.08 |