1cfd3bbb56
Topic_CSS/Topic_HTML/Topic_JavaScript/Topic_Prompt/Topic_Comfyui 등 기존 카테고리 폴더를 정리하고, Topic_Graphic/Dev 등 신규 산출물과 Topics 내부 세션/메모리 기록을 동기화.
71 lines
3.9 KiB
Markdown
71 lines
3.9 KiB
Markdown
---
|
|
id: c-pointers
|
|
title: "C Pointers"
|
|
category: "Programming_Language"
|
|
status: "draft"
|
|
verification_status: "conceptual"
|
|
canonical_id: ""
|
|
aliases: ["pointer declaration", "dereference operator", "C 포인터"]
|
|
duplicate_of: ""
|
|
source_trust_level: "B"
|
|
confidence_score: 0.87
|
|
created_at: 2026-07-04
|
|
updated_at: 2026-07-04
|
|
review_reason: ""
|
|
merge_history: []
|
|
tags: ["c", "programming-language", "w3schools", "pointers"]
|
|
raw_sources: ["https://www.w3schools.com/c/c_pointers.php"]
|
|
applied_in: []
|
|
github_commit: ""
|
|
---
|
|
|
|
# [[C Pointers]]
|
|
|
|
## 🎯 한 줄 통찰 (One-line insight)
|
|
The `*` symbol does two OPPOSITE jobs depending on where it appears — in a declaration (`int* ptr`) it CREATES a pointer, but everywhere else (`*ptr`) it DEREFERENCES one to retrieve the pointed-to value — and the source explicitly flags this dual meaning as a common source of confusion, since the same character means "this variable will hold an address" in one context and "give me what's at this address" in another. [S1]
|
|
|
|
## 🧠 핵심 개념 (Core concepts)
|
|
- **Pointer** — a variable that stores another variable's memory address as its value. [S1]
|
|
- **Type-matched declaration** — a pointer's declared type must match the type of variable it points to (`int* ptr` for an `int`). [S1]
|
|
- **`*` in declaration vs. elsewhere** — `int* ptr;` creates a pointer variable; `*ptr` (outside declaration) dereferences it to get the pointed-to value. [S1]
|
|
- **Two equivalent declaration styles** — `int* myNum;` and `int *myNum;` are functionally identical; spacing around `*` is purely stylistic. [S1]
|
|
- **Why pointers matter** — enable direct memory manipulation (reducing code, improving performance), are essential for implementing data structures (lists, trees, graphs), and are sometimes REQUIRED (e.g. file I/O, memory management). [S1]
|
|
|
|
## 📖 세부 내용 (Details)
|
|
- Creating a pointer and reading the address it stores: `int myAge = 43; int* ptr = &myAge; printf("%p\n", ptr); // same address as &myAge`. [S1]
|
|
- Dereferencing to get the pointed-to value: `printf("%d\n", *ptr); // 43 (myAge's value, accessed via the pointer)`. [S1]
|
|
|
|
## ⚖️ 모순 및 업데이트 (Contradictions & updates)
|
|
- **`*`의 이중 의미**: 선언에서 쓰인 int* ptr는 포인터 변수를 만들지만, 선언이 아닌 곳에서 쓰인 *ptr는 역참조 연산자로 동작한다는 점이 혼동 요소로 명시적으로 지적됨. [S1]
|
|
- **포인터 취급 시 주의사항**: 다른 메모리 주소에 저장된 데이터를 손상시킬 수 있으므로 포인터는 신중하게 다뤄야 한다고 경고됨. [S1]
|
|
|
|
## 🛠️ 적용 사례 (Applied in summary)
|
|
현재 발견된 실제 적용 사례가 없습니다 — 리스트/트리/그래프 같은 자료구조를 구현하거나 파일 및 메모리 관리 작업을 할 때 포인터가 필수적으로 쓰인다고 원문에서 직접 언급됨. [S1]
|
|
|
|
## 💻 코드 패턴 (Code patterns)
|
|
Creating a pointer, then reading the address vs. the dereferenced value (C):
|
|
```c
|
|
int myAge = 43; // Variable declaration
|
|
int* ptr = &myAge; // Pointer declaration
|
|
printf("%p\n", ptr); // Reference: memory address of myAge
|
|
printf("%d\n", *ptr); // Dereference: value of myAge (43)
|
|
```
|
|
|
|
## ✅ 검증 상태 및 신뢰도
|
|
- **상태:** draft
|
|
- **검증 단계:** conceptual
|
|
- **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body)
|
|
- **신뢰 점수:** 0.87
|
|
- **중복 검사 결과:** 신규 생성 (New discovery)
|
|
|
|
## 🔗 지식 그래프 (Knowledge Graph)
|
|
- **상위/루트:** [[C Tutorial]]
|
|
- **관련 개념:** [[C Memory Address]], [[C Pointers Arithmetic]]
|
|
- **참조 맥락:** 포인터 기초 — 포인터 연산(Pointers Arithmetic) 챕터로 이어짐.
|
|
|
|
## 📚 출처 (Sources)
|
|
- [S1] W3Schools — C Pointers — https://www.w3schools.com/c/c_pointers.php
|
|
|
|
## 📝 변경 이력 (Change history)
|
|
- 2026-07-04: Initial draft synthesized from the W3Schools "C Pointers" page (Astra wiki-curation, P-Reinforce v3.1 format).
|