전처리기
프로그램을 컴파일할 때 컴파일 직전에 실행되는 별도의 프로그램
#이 붙어있음
<stdio.h>
.h가 붙어있는 파일을 헤더 파일이라 부른다.
stdio.h를 포함하겠다는 의미이다.
stdio.h를 포함하지 않으면 printf 함수를 사용할 수 없다.
라이브러리
도서관처럼 필요한 기능들을 찾아서 쓸 수 있도록 플랫폼이 제공해주는 것
수학에서의 함수 형태
y = f(x)
y = 2x
C언어에서의 함수 형태
int main(void)
{
}
f: main
x: void
y: int
함수의 영역은 { 와 } 사이에 함수의 정의를 한다.
하나의 프로젝트 안에는 2개의 main은 존재할 수 없다.
주석문을 사용하는 이유
어떤 단어나 문장에 대한 구체적인 부연 설명
프로그래밍에서 주석은 필수이다.
짧은 문장의 주석문 처리
주석문이 짧은 문장일 경우 // 기호를 사용
// Hello World 문자열을 출력한다.
긴 문장의 주석문 처리
/*
주석문
*/
int main()
{
printf("김혜진\n인천광역시 서구 가좌동\n010-2144-6422");
return 0;
}
\n (역슬래시n) : 개행을 나타냄
C언어에서 변수는 '변경이 가능한 수'를 의미한다.
변수에는 어떠한 값이 들어갈 지 예측할 수 없다.
메모리 상에 올라가있는 수많은 데이터를 어떻게 구분할 것인가?
메모리 주소 값을 사람이 일일이 다 기억할 수 있을까?
주소값을 기억하기보다는 의미있는 이름을 기억하는 것이 쉽다.
디스크에 저장되어있는 파일을 실행시켰을 때 메모리(RAM)에 올라가고(프로세스), CPU(연산장치)는 메모리에 올라가있는 프로그램만 인식한다.
CPU는 디스크에 있는 파일은 알 수 없다.
집 주소가 없는 집이 없는 것처럼, 메모리마다 주소값이 할당되어있다.
7이라는 값이 4바이트 메모리에 저장이 되어있고, 내가 이 값에 접근하려면 이 주소값에 접근해야한다.
이 주소값을 일일이 기억할 수 없으니 메모리에 별명을 붙여주는 것이다.
그 별명을 통해서 메모리에 접근할 수 있다.
변수에 값을 대입하더라도 그 값이 메모리를 얼마나 차지하는지 알아야한다.
변수 선언의 기본 형태
자료형 변수명;
int value;
변수명을 지어주어야 하는데, 쓰임새를 생각해서 맞는 이름을 지어주는 것이 좋다.
변수 앞에는 변수를 설명할 수 있는 타입(자료형)이 온다.
int value : 정수형(4바이트 메모리가 필요한) value(이름)
변수 선언 후 값을 대입하는 경우
int value;
value = 100;
value라는 변수에 100이라는 값이 대입이 된다.
변수 선언과 동시에 초기화하는 경우
int num = 5;
int value; value = 100;
int value = 100;
두 선언 방법에는 미세한 차이가 있다.
컴파일러가 1번 첫째줄을 해석할 때 선언된 value 안에는 쓰레기값(알 수 없는 값)이 들어가 있는 불안정한 상태이며 좋은 코드가 아니다. (선호하지 않는 방법)
2번처럼 변수와 값을 한번에 선언하는 것을 초기화라고 한다.
초기화되지 않은 변수를 출력하면 오류가 뜬다.
#include<stdio.h>
int main() {
int value = 0;
int num = 5;
value = 100;
printf("%d %d\n", value, num);
return 0;
}
%d : decimal (10진수)
정수의 경우 %d라는 서식문자를 통해 출력
출력결과
100 5
1바이트
문자열을 나타날 때는 " "
사용
문자 하나를 나타낼 때는 ' '
사용
char 타입을 %d로 출력했을 때의 결과 67
엄밀히 따지면 char타입도 정수이다.
#include<stdio.h>
int main() {
int age = 26;
char grade = 'A';
printf("이름 : 김혜진\n");
printf("나이 : %d세\n", age);
printf("성적 : %c\n", grade);
return 0;
}
정수란 0을 포함한 부호(양수와 음수)가 있는 수이다. 소수점은 표현하지 못한다.
#include<stdio.h>
int main() {
int width = 10;
int height = 20;
printf("사각형의 넓이는 %d이다.\n", width * height);
return 0;
}
출력결과 사각형의 넓이는 200이다.
실수란 소수점 이하를 가지는 수를 말한다. 대표적으로 float와 double형이 있다.
#include<stdio.h>
int main() {
double area;
double radius = 5;
area = radius * radius * 3.14;
printf("원의 넓이는 %f이다.\n", area);
return 0;
}
출력결과 원의 넓이는 78.500000이다.
소수점 둘째자리까지 출력을 원한다면 %.2f
로 적는다.
숫자만 인식하는 컴퓨터는 문자를 표현하기 위해 특정 숫자와 특정 문자를 대응시키는 방법을 사용한다.
아스키 코드라는 표준에 의거한다.
컴퓨터가 키보드에 있는 문자의 아스키 코드를 인식해 처리한 후 화면에 출력하게 되는 것.
#include<stdio.h>
int main() {
char ch1 = 'A';
printf("%d, %c\n", ch1, ch1);
return 0;
}
출력결과 65, A
상수는 변하지 않는 수를 의미한다.
메모리 공간에 수가 존재하지만 그 값을 변경할 수 없다.
변수 선언에 const 기호를 붙여주면 상수화 된다.
단, 주의할 점은 선언과 동시에 초기화 해야 한다.
const int Ten = 10;
다음은 오류의 형태이다.
const int TEN;
TEN = 10;
TEN의 값을 지정해주지 않아 TEN 안에 들어가있는 쓰레기 값이 상수화가 되어버리기 때문에 10을 대입해도 값이 변하지 않는다.
왜 const를 쓸까?
1. 시스템 규모가 커지면서 코드가 복잡해짐
=> 엄격한 문법이 필요해짐에 따라 const를 사용하게 됨
2. 값이 바뀌지 않아야 할 때
=> 중간에 실수로 값을 바꾸는 코드를 넣는 상황을 방지하기 위함. 코드가 많을수록 찾기 힘들어진다.
모던 자바스크립트에서는 const를 권장
javascript의 const와 C언어의 const는 미묘한 차이가 있음
디자인
블록
디자인
블록