포인터
2025. 4. 14. 10:14ㆍ개념 공부
C 언어 포인터 정리
1. 포인터란?
포인터는 어떤 변수의 메모리 주소를 저장하는 변수입니다.
int a = 10;
int *p = &a; // p는 a의 주소를 저장
2. 기본 문법
*p: 포인터 p가 가리키는 주소의 값p: 주소 자체&변수: 변수의 주소
3. 값 입력 예시 (포인터 사용)
일반 변수와 포인터 변수의 입력 방식 차이
int x;
int *p = &x;
scanf("%d", &x); // 일반 변수는 주소 필요
scanf("%d", p); // 포인터는 주소를 이미 가지고 있음
4. 배열과 포인터
배열 이름은 배열의 첫 번째 원소의 주소
int arr[5];
int *p = arr; // arr == &arr[0]
p++; // 다음 원소로 이동
printf("%d", *p); // 두 번째 원소 출력
5. 포인터로 배열 입력 받기
int ar[50] = {0}, N;
int *p;
scanf("%d", &N);
for (p = ar; p < ar + N; p++) {
scanf("%d", p); // *p 위치에 입력값 저장
}
6. 포인터로 배열에서 조건 찾기
int count = 0;
for (p = ar; p < ar + N; p++) {
if (*p == 0) break; // 0이 나오면 멈춤
count++;
}
7. 함수 매개변수로 포인터 사용
함수에서 값을 바꾸고 싶을 때 포인터를 씀
void modify(int *x) {
*x += 10;
}
int main() {
int a = 5;
modify(&a); // a의 주소 전달
printf("%d", a); // 15 출력
}
8. 포인터와 구조체
typedef struct {
int value;
} Data;
Data d = {10};
Data *p = &d;
printf("%d", p->value); // 구조체 포인터 접근
9. 포인터를 사용한 연결 리스트
typedef struct _node {
int data;
struct _node *next;
} Node;
Node *head = NULL;
Node *newNode = malloc(sizeof(Node));
newNode->data = 10;
newNode->next = head;
head = newNode;
10. 정리
- 일반 변수 →
&변수로 주소 전달 - 포인터 변수 → 이미 주소니까 그대로 사용
*포인터→ 주소가 가리키는 값을 읽거나 쓴다- 포인터 연산
p++→ 배열처럼 메모리 다음 칸 이동
'개념 공부' 카테고리의 다른 글
| 컴퓨터 시스템 7장-링커(Linking) 1-2 (0) | 2025.04.19 |
|---|---|
| 컴퓨터 시스템 7장-링커(Linking) 1-1 (0) | 2025.04.19 |
| 컴퓨터 시스템에서의 가상화 (1) | 2025.04.12 |
| CS:APP 3장 – 기계 수준 프로그램 표현 (중요 개념 정리) (0) | 2025.04.09 |
| 컴퓨터 시스템 2주차 (0) | 2025.04.03 |