#include <stdio.h>
int sum(int a, int b) {
return a+b;
}
int main() {
char *str="Hello world!\n";
int a=3;
int b=1;
int c=sum(a, b);
printf("%d + %d = %d\n", a, b, c);
printf(str);
printf(str+3);
return 0;
}
#include <stdio.h>
전처리기 지시문입니다. stdio.h (Standard Input Output header) 파일을 포함시켜서 printf 같은 표준 입출력 함수들을 사용할 수 있게 합니다.
int sum(int a, int b) {
return a+b;
}
함수 정의입니다.
int: 반환 타입 (정수를 반환)
sum: 함수 이름
(int a, int b): 두 개의 정수 매개변수
return a+b: 두 수를 더한 값을 반환
int main() {
프로그램의 시작점입니다. 모든 C 프로그램은 main 함수에서 실행을 시작합니다.
char *str="Hello world!\n";
문자열 포인터 선언 및 초기화입니다.
char *str: 문자를 가리키는 포인터 변수
"Hello world!\n": 문자열 리터럴 (메모리 어딘가에 저장됨)
\n: (줄바꿈)
str은 이 문자열의 첫 번째 문자 주소를 가리킵니다
int a=3;
int b=1;
정수 변수 선언 및 초기화입니다. a에 3, b에 1을 저장합니다.
int c=sum(a, b);
함수 호출 및 결과 저장입니다.
sum(a, b)를 호출 → sum(3, 1) 실행 → 4 반환
반환값 4를 변수 c에 저장
printf("%d + %d = %d\n", a, b, c);
형식화된 출력입니다.
%d: 정수를 10진수로 출력하는 형식 지정자
첫 번째 %d → a (3)
두 번째 %d → b (1)
세 번째 %d → c (4)
출력: 3 + 1 = 4
printf(str);
문자열 출력입니다.
str이 가리키는 문자열을 출력
출력: Hello world!
printf(str+3);
포인터 산술 연산입니다
여기가 핵심입니다.
포인터에 숫자를 더하면 그 타입의 크기만큼 주소가 이동합니다:
char : +1 하면 1바이트 이동
int : +1 하면 4바이트 이동 (int가 4바이트라면)
str은 "Hello world!\n"의 첫 번째 문자 'H'를 가리킴
str+3은 포인터를 3칸 이동 → 'l' (네 번째 문자)을 가리킴
인덱스로 보면: H(0) e(1) l(2) l(3) → 3번 인덱스부터 시작
출력: lo world!
return 0;
**프로그램 종료**입니다. `0`을 반환하면 "정상 종료"를 의미합니다.
---
## 전체 실행 결과:
3 + 1 = 4
Hello world!
lo world!
핵심 포인트: str+3은 문자열에서 3바이트 뒤의 주소를 가리켜서, 거기서부터 문자열을 출력합니다. C에서 포인터 산술 연산의 대표적인 예시입니다.