프로그램 실행 과정
graph LR
A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성)
B-->|Linker|C[실행파일 생성]
- Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
- Linker : 소스코드와 시스템 라이브러리 파일을 연결시킴. 목적 파일 여러개를 연결시켜 실행파일 하나를 생성함.
전처리기
#include < 헤더파일명.h > // 시스템 헤더파일
- # : 전처리기 지시자
- .h : 헤더파일
- 시스템(컴파일러)에 있는 헤더파일 사용할 경우 <>사용
#include " 헤더파일명.h " // 사용자가 만든 헤더파일
- 사용자가 만든 헤더파일일 경우 "" 사용
함수 표현
int main(void) //자료형 입력 (void)
{
//함수내용
return 0; // 0이라는 값을 반환함
}
printf
printf("hello world! /n"); ///n은 개행
printf("%s /n", "hello world"); // 서식 문자 사용가능
printf("%s %s /n", "hello", "world"); // 재활용 용이
주석
// // 한줄 주석
/* (내용) */ // 여러줄 주석
키워드
고유된 의미를 갖는 예약된 단어 (예약어)
식별자(idenfifier)
키워드 외에 프로그램에서 사용자가 필요에 따라 이름을 만들어 사용하는 단어
=> 규칙이 존재한다.
- 첫글자 숫자 안된다.
- 쓸 수 있는 문자가 제한되어 있다.
- 대소문자 구별
- 키워드 사용불가
상수(constant)
프로그램의 실행 시작부터 끝날 때까지 값이 변하지 않는 자료
문자 한개는 ''로 표시
문자열은 ""으로 표시
기호 상수(파이 같은) 는 전처리문인 #define을 이용해 상수명과 값을 지정한 후 사용 컴파일 이전에 상수명(PI)를 찾아 모두 값(3.141592)로 단순 치환
메모리 상수
const double PI = 3.141592
값을 메모리가 차지한다. 이 값은 상수이므로 값을 변화시킬 수 없다.
오류 예제
#include <stdio.h> int main(void) { int num1 = 10; const int num2 = 50; printf("num1 초기값 :%d\n", num1); printf("num2 초기값 :%d\n", num2); num1 = 20; num2 = 30; printf("num1 새로운값 :%d\n", num1); printf("num2 새로운값 :%d\n", num2); return 0; } // Main.c: In function ‘main’: Main.c:13:7: error: assignment of read-only variable ‘num2’ num2 = 30; ^
변수(variable)
값이 계속 변환될 수 있는 값
임시로 자료값을 저장할 수 있는 저장 장소
변수에 값을 저장할 수 있고, 이 값은 계속 변경 가능
변수 선언을 해야 사용할 수 있음
int age; //자료형 변수명
변수의 초기화
선언된 변수에 처음으로 값을 저장
int age = 20; // 초기에 20이라는 값이 들어감 int age; age = 20; // 이것도 가능 int age; // 이렇게만 선언하면 dummy값이 저장되어 있음
예제
#include <stdio.h> int main(void) { int num1 = 10, num2; printf("num1 초기값 : %d\n", num1); printf("num2 초기값 : %d\n", num2); num1 = 20; num2 = 30; printf("num1 새로운 값 : %d\n", num1); printf("num2 새로운 값 : %d\n", num2); return 0; } // 프로세스가 시작되었습니다.. > num1 초기값 : 10 num2 초기값 : 0 num1 새로운 값 : 20 num2 새로운 값 : 30
변수 동시 선언
int a = 20, int b = 22;