1cfd3bbb56
Topic_CSS/Topic_HTML/Topic_JavaScript/Topic_Prompt/Topic_Comfyui 등 기존 카테고리 폴더를 정리하고, Topic_Graphic/Dev 등 신규 산출물과 Topics 내부 세션/메모리 기록을 동기화.
4.7 KiB
4.7 KiB
id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
| id | title | category | status | verification_status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | created_at | updated_at | review_reason | merge_history | tags | raw_sources | applied_in | github_commit | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| c-pointers-arithmetic | C Pointer Arithmetic | Programming_Language | draft | conceptual |
|
B | 0.87 | 2026-07-04 | 2026-07-04 |
|
|
C Pointer Arithmetic
🎯 한 줄 통찰 (One-line insight)
Adding 1 to a pointer never means "move forward by 1 byte" — it means "move forward by the SIZE of whatever type the pointer points to" — so from the same starting address, int* + 1 jumps 4 bytes while char* + 1 jumps only 1 byte, meaning pointer arithmetic is silently type-scaled, and mixing up pointer types is explicitly called out as a common mistake that lands you at the wrong memory location entirely. [S1]
🧠 핵심 개념 (Core concepts)
- Pointer arithmetic — changing a pointer's VALUE to make it reference a different element, exploiting the fact that array elements sit contiguously in memory. [S1]
++/--/+=/-=on pointers — move the pointer forward/backward by one (or N) elements, just like a loop counter. [S1]- Type-scaled movement —
p + 1advances bysizeof(pointed-to type)bytes, not literally 1 byte; anint*moves 4 bytes per step while achar*moves 1 byte per step. [S1] - Pointer subtraction (distance) — subtracting two pointers INTO THE SAME ARRAY yields the number of ELEMENTS between them, not bytes; only valid when both pointers reference the same array. [S1]
- Pointer-driven loop — looping by incrementing the pointer itself (
p++) instead of indexing (myNumbers[i]) needs no separate index variable at all. [S1]
📖 세부 내용 (Details)
- Accessing array elements via pointer offset:
int myNumbers[4] = {25, 50, 75, 100}; int *p = myNumbers; printf("%d\n", *p); printf("%d\n", *(p + 1)); // 50. [S1] - Moving a pointer with increment/decrement/step:
p++; // next element p--; // previous element p += 2; // jump 2 elements. [S1] - Pointer subtraction giving element count:
int *start = &myNumbers[1]; int *end = &myNumbers[4]; printf("%ld\n", end - start); // 3 elements apart. [S1] - Type-dependent step size proven side by side:
int *pi = myNumbers; // moves by sizeof(int), typically 4 bytes char *pc = letters; // moves by 1 byte. [S1] - Pointer-only loop (no index variable):
int *p = myNumbers; for (int i = 0; i < 4; i++) { printf("%d\n", *p); p++; }. [S1]
⚖️ 모순 및 업데이트 (Contradictions & updates)
- 포인터 이동은 타입에 따라 크기가 다름: int는 한 칸 이동 시 보통 4바이트, char는 1바이트만 이동한다는 점이 동일한 시작 주소에서 직접 비교되어 확인되며, 타입을 혼동하면 잘못된 메모리 위치를 가리키게 된다고 경고됨. [S1]
- 배열 경계를 벗어나는 이동 금지: 배열의 끝을 한 칸 넘어선 위치까지는 포인터 비교용으로만 안전하며, 그 값을 실제로 역참조해서는 안 된다는 점이 명시됨. [S1]
🛠️ 적용 사례 (Applied in summary)
현재 발견된 실제 적용 사례가 없습니다 — 인덱스 변수 없이 포인터 자체를 증가시키며 배열을 순회하는 방식이 메모리를 직접 다루는 실전 코드에서 흔히 쓰이는 패턴으로 소개됨. [S1]
💻 코드 패턴 (Code patterns)
Looping through an array by advancing the pointer itself, with no index variable (C):
int myNumbers[4] = {25, 50, 75, 100};
int *p = myNumbers; // start of array
for (int i = 0; i < 4; i++) {
printf("%d\n", *p);
p++; // move to next element
}
✅ 검증 상태 및 신뢰도
- 상태: draft
- 검증 단계: conceptual
- 출처 신뢰도: B (W3Schools — widely used educational reference, not a primary standards body)
- 신뢰 점수: 0.87
- 중복 검사 결과: 신규 생성 (New discovery)
🔗 지식 그래프 (Knowledge Graph)
- 상위/루트: C Tutorial
- 관련 개념: C Pointers, C Pointers Arrays
- 참조 맥락: 포인터 연산 — 포인터와 배열(Pointers Arrays) 챕터로 이어짐.
📚 출처 (Sources)
- [S1] W3Schools — C Pointer Arithmetic — https://www.w3schools.com/c/c_pointers_arithmetic.php
📝 변경 이력 (Change history)
- 2026-07-04: Initial draft synthesized from the W3Schools "C Pointer Arithmetic" page (Astra wiki-curation, P-Reinforce v3.1 format).