본문으로 바로가기

C언어 공부 정리1

category C언어/C 2020. 11. 23. 22:33

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차원 배열 선언

 

 

반응형