C언어
: 절차지향 언어
: 컴파일 언어
: 1972년 Unix OS를 만들기 위해 만들어 졌다.
- Unix OS --> Solaris(sun, Oracle), Freedbs, HP, IBM
- 하드웨어가 비싸다.
- MS에서도 Freebsd 사용 중
- Unix의 90%가 C언어, 10%가 asm(초창기에는 이 비중을 맞췄으나 현재는 다를 수도 있지만 C언어의 비중이 높다.)
- 안드로이드 -> 리눅스
- 언어 > 자바(하이레벨) > 구동하는 시스템은 C (로우레벨)
C언어의 특징
: 빠르다. 메모리의 주소를 알 수 있으면 바로 갈 수 있다. 하지만 잘못된 주소를 접근했을 때 데이터 손실이 발생한다.
: 고급언어와 저급언어의 특징을 갖고있다.
***.c (원시코드) ---> Compile ---> ***.obj (목적코드) : 저급언어 ---> run ---> ***.exe (실행파일)
: 메모리 사용량이 적다. (하드웨어 컨트롤할 때 좋다.)
데이터 타입
: 문자형 - char(1) // %c (문자), %s (문자열), %d (10진수, ASCII)
: 정수형 - short(2) int(4) // %d (10진수), %o(8진수), %x (16진수), %u(부호가 없는 10진수)
long(4) // %ld, %lo, %lx , %lu
: 실수형 - float(4) // %f, %e(지수형태로 출력할 때)
double(8) // %lf, %le
: 논리타입, 레퍼런스타입이 없음
연산자
: 확장성? 자바는 명확하지 않은 걸 싫어함(boolean 타입의 생성 이유?)
: &&(논리 AND) &(BIT AND)
3 && 9 ---> 1(True) 자바에서는 error
3 & 9 ---> 1(정수) // 0011 & 1001
C언어 코드의 기본 형태
// 선처리부 (환경 설정) : 헤더파일(***.h) #include<***.h>
매크로, 전역변수(내가 쓰고 있는 프로그램 전체에 사용가능) : 데이터 관리가 힘들어지기 때문에 안쓰는게 좋음
사용자 정의 함수 정의 : 정의를 하지 않으면 인식하지 않음
사용자 정의 데이터타입 등
int main(void){ // 프로그램의 시작과 끝
}
scanf
scanf("입력서식", 입력대상체의 주소); // Java의 Scanner
C에서 주소 의미
1. &변수명 : 변수의 시작 주소
2. 배열명 : 항상 그 배열의 시작 주소
3. 문자열 (문자 배열)
4. 포인터
5. 함수명 : 함수가 할당된 주소(코드영역에 담기기 떄문에)
함수 모듈화
1. call by name
2. call by value
3. call by address // Java에서 없음
// 4. call by reference C에서 없음
Array(배열)
: 동일한 데이터 타입을 메모리상에서 순차적으로 나열
int arr[] = new int[10]; // Java Style
int arr[10]; // C Style
arr[0] = 1;
int arr2[2][3] = {1,2,3,};
// 배열을 선언과 동시에 초기화 할 경우 전부 다 하지 않은 비워준 곳은 자동으로 0으로 초기화
int arr3[2][2][3]; // 3차원 배열 선언
'C언어 > C' 카테고리의 다른 글
C언어 공부 정리6(동적 메모리) (0) | 2020.11.30 |
---|---|
C언어 공부 정리5(구조체) (0) | 2020.11.27 |
C언어 공부 정리4(다차원 포인터) (0) | 2020.11.26 |
C언어 공부정리3(포인터) (0) | 2020.11.25 |
C언어 공부정리2(배열의 주소값) (0) | 2020.11.24 |