포인터 선언하기
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 2번째.
이제 포인터가 무엇인지 이해했으므로 포인터를 생성하는 방법을 알아봅시다. 포인터 변수를 선언할 때는 포인터가 가리킬 데이터 유형을 컴파일러에 알려주는 특정 구문을 따릅니다.
포인터를 선언하기 위한 기본 구문은 다음과 같습니다: data_type *pointer_name;
int *ptr; // 정수에 대한 포인터를 선언합니다
char *ch_ptr; // 문자에 대한 포인터를 선언합니다
float *f_ptr; // 실수에 대한 포인터를 선언합니다별표(*)는 이것을 포인터 선언으로 만드는 핵심입니다. 이것은 변수가 실제 데이터 값이 아닌 메모리 주소를 저장할 것임을 컴파일러에 알려줍니다. int *ptr;을 선언할 때, 여러분은 "ptr은 정수형 변수의 주소를 저장할 수 있는 포인터이다"라고 말하는 것입니다.
포인터가 아직 유효한 메모리 주소를 가리키고 있지 않다면 NULL로 초기화하는 것이 좋은 관례입니다. 이렇게 하면 포인터가 임의의 메모리 위치를 가리키는 것을 방지할 수 있습니다: int *ptr = NULL;
printf를 사용하여 pointer 주소를 출력할 때는 %p format 지정자를 사용합니다. 호환성과 올바른 서식을 보장하기 위해 pointer를 (void *)로 형변환(cast)하는 것이 좋습니다: printf("%p", (void *)ptr);
별표 앞의 데이터 타입은 pointer가 가리킬 데이터의 종류를 지정한다는 점에 유의하세요. 서로 다른 데이터 타입은 서로 다른 양의 메모리 공간을 차지하며, 컴파일러가 적절한 메모리 관리를 위해 이 정보를 알아야 하기 때문에 이는 중요합니다.
챌린지
쉬움NULL로 초기화된int_ptr이라는 이름의 integer 포인터를 선언합니다.NULL로 초기화된char_ptr이라는 이름의 character 포인터를 선언합니다.NULL로 초기화된float_ptr이라는 이름의 float 포인터를 선언합니다.%pformat 지정자와 함께printf를 사용하여 각 pointer에 저장된 메모리 address를 출력합니다. 출력할 때는 올바른 포맷팅을 위해 pointer를(void*)로 캐스팅하세요. 예:printf("Label: %p\n", (void*)ptr);
출력은 다음 format으로 세 개의 pointer address를 표시해야 합니다:
Integer pointer: [address]
Character pointer: [address]
Float pointer: [address]실제 메모리 address는 달라질 수 있지만, format과 라벨은 위에 나타난 것과 정확히 일치해야 합니다.
직접 해보기
#include <stdio.h>
int main() {
// TODO: 여기에 포인터를 선언하세요
// TODO: 필요한 형식을 사용하여 포인터 주소를 출력하세요
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.