c언어 문법 정리

C언어 문법 총 정리

식별자 : 변수명, 함수명, 상수명등...
① 영문자,숫자, 밑줄문자(_)의 조합
② 첫글자는 반드시 밑줄문자 또는 영문자로 시작
③ 공백문자, 예약어는 사용할수 없다
    ex) int printf = 10  (X)
        int h k d = 20   (X)
        int 123a = 10;   (X)
        int a123 = 20;   (O) 
        int _k = 100;    (O) 
④ 대.소구별
    ex) int A=10;
        int a=20;



자료형
①정수형- short int   (2byte) -32768 ~ +32767            %d
          int         (4byte) -2147483648 ~ +2147483647  %d
          unsigned int(4byte)                            %u  ==> 음수가없다
          long        (4byte)                            %ld

②실수형- float       (4byte)                            %f
          double      (8byte)                            %lf

③문자형- char        (1byte)         %c('문자'),%s("문자열")
④주소형변수(*) - 4byte

int a=10;
long b=20L;

float a=10.5F;
double b=20.3;

%-10.2f    ==>전체자릿수.소수이하

 

 


※변수(Constant)와 상수(Variable)
(1)변수 : 자료를 기억시킬 기억장소
정수,실수,문자,문자열,나열형,
        레퍼런스(reference) - 별명
        컨스트(const) - 값변경X

(2)상수 : 변수에 기억시킬자료

 


※형변환(우선순위) : 문자 < 정수 < 실수
char < short < unsigned int < int 
작->큰 (값의 보강 가능)
큰->작 (값의 보장안됨)

ex)double k=56.38;
   int s=(int)k;       <--- 56

강제(명시적)형변환 :  float avg = (float)tot/3;
자동(묵시적)형변환 :  float avg = tot/3.0;

 

 


※ 제어문자 
\n - 줄바꾸기
\t - 8칸(tab)띄우기
\a - 경고음("삑")
\r - New Line(줄 맨앞으로)
\0 - NULL(아무것도 없다)
\b - 한칸 왼쪽으로 이동
--------------------------------------------------------------


(1) 문자
<형식>  변수 = getchar();
        putchar(변수 or '문자');

getch() : 입력과 동시에 읽어들임(화면표시 X)
getche(): 입력과 동시에 읽어들임(화면표시 O)
        getchar():Enter입력후 데이터를 읽어들임

fflush(stdin) : 키보드 버퍼를 clear
scanf("%*c%c",변수): 1칸 건너띄기

(2) 문자열
<형식>  gets(변수);   <--- space도 문자로 인식
        puts(변수 or "문자열");

(3) 모든데이타(문자,숫자,문자열....)
<형식> scanf("변환기호",&변수, &변수....);
       printf("변환기호 or 메세지",변수, 변수,...);

       %s로 입력받는경우 : space인정 안함

--------------------------------------------------------
※typedef(Type Definition):자료형 재정의
<형식> typedef 자료형 별명(바꿀이름)
--------------------------------------------------------
5. 연산자
(1)산술연산자 :  +, -, *, /, %(나머지-int형만)
                ex) 5/3 ==> 1,  5%3 ==> 2

(2)관계연산자 : >, <, >=, <=, ==(같다), !=(같지않다)
true(1, 0이아닌수), false(0) 

(3)논리연산자 : &&(논리곱)    - 둘다 만족해야 참(and)
                    ||(논리합)       - 둘중 하나만 만족해도 참(or)
                    ! (논리부정)    - ~반대  

         ex)  A    B    A and B     A or B    !A
             --------------------------------------
              T    T       T          T        F
              T    F       F          T        F
              F    T       F          T        T
              F    F       F          F        T

        ex) 주소가 서울이거나 부산인사람 찾기(or조건  ||)
            서울      1               0        ==>  O
            부산      0               1        ==>  O   
            광주      0               0        ==>  X 

             addr == "서울" ||  addr == "부산"
        ------------------------------------------------------- 
        ex) 점수가  80이상이면서 90미만인사람찾기(and조건 &&)
            30        0               1      ==>  X
            100      1               0      ==>  X
            85       1                1      ==>  O  

            score >= 80  &&  score < 90 
 
            80 <=  score < 90           ====> 오류!!!


(4)증가/감소연산자
   ++변수  : 1증가후 값사용(전치)
   --변수  : 1감소후 값사용
   변수++  : 값사용후 1증가(후치)
   변수--  : 값사용후 1감소     
(5)할당(대입)연산자
   +=  : a=a+b     a+=b
   -=  : a=a-b     a-=b
   *=  : a=a*b     a*=b
   /=  : a=a/b     a/=b
   %=  : a=a%b     a%=b


(7)삼항(조건)연산자  ==>간단한 if
<형식> 조건식? true일때 : false일때;
 
   ex)  int a=10;
         (a>0)? puts("plus") : puts("minus");
      
(8)sizeof연산자 : 자료형의 길이(byte)구함

 

 


※진법변환
2진수 :0,1
8진수 :0,1,2,3,4,5,6,7
16진수:0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)

8진수표현(Octal): int a=04;       %o 
16진수표현(Hexa): int b=0x45a     %x 
------------------------------------------------------------
   int  a,b,c,d,e,f;
   a=0x42af;
   b=0xaf03;
   c=a&b;
   d=a|b;
   e=a^b;
   f=~a;
   printf("%x  %x  %x  %x", c,d,e,f);


   printf("%d\n", 8<<2);
   printf("%d", 18>>3);    
-------------------------------------------------------------
6. 제어문(if문)
①   if(조건식)
{
    참일때;
}

②   if~else문
if(조건식)
{
   참일때;
}
else
{
   거짓일때;
}

③   if~else if문 
if(조건식)
{
   참일때;
}
else if(조건식)
{
   참일때;
}
 .
 .
else
{
   거짓일때;
}
-----------------------------------------------
※무조건 분기문

분기명:
goto 분기명;
-----------------------------------------------
                                  
-----------------------------------------------------------
7. 제어문(switch문)
형식>   switch(값)  //값--> int, char형만 가능
           {
                   case 값1 : 실행문; break;
                   case 값2 : 실행문; break;
                   case 값3 : 실행문; break;
                       .
                       .
                   [default:] 실행문;
          }
8. 제어문(조건반복문)
(1)while : 조건이 참이면 실행(조건에 따라서 한번도 실행안할수도 있다)
   while(조건식)
   {
      참일때;
   }

(2)do~while : 실행후 조건비교(적어도 1번은 실행을 한후 조건비교)
   do
   {
      실행문;
   }while(조건식);

 


9. for문(무조건반복문)
(1)단일for문
   for(초기값;조건식;증감식)
   {
   }

※break : 블럭탈출
  continue : Loop문에서 밑에문장을 수행하지 않고 다음Loop진행

(2)다중for문
   for(초기값;조건식;증감식)
   {
       for(초기값;조건식;증감식)
       {
       }
   }

10.문자열함수 (#include )
①strcpy(s1,s2):s1에 s2를 복사           //중요!!!
②strcmp(s1,s2):s1과 s2를 비교            (s1> s2:1/ s1<s2:-1/ s1==s2:0) //중요!!!
③strlen(s):s문자열의 길이                 //중요!!  
④strrev(s):s문자열을 꺼꾸로출력
⑤strcat(s1,s2):문자열 s2를 s1에 연결
⑥strupr(s):소문자를 대문자로(문자열)
⑦strlwr(s):대문자를 소문자로
⑧tolower(c):대문자를 소문자로(문자)
⑨toupper(c):소문자를 대문자로
⑪strchr(s,c):s에서 최초의 c이후 문자를 구함
⑫strset(s,c):s를 c로 지정한 문자로 바꾼다

11. 배열(Array)
:같은형의 자료형으로 구성된 데이타들의 모임

1)1차배열
  자료형 배열명[첨자]={숫자1, 숫자2,....};
  자료형 배열명[첨자]={'문자1','문자2'...};
  자료형 배열명[첨자]="문자열";
       첨자:생략가능    int a[]={10,20,30};
                              int a[5];
                              int a[];       <--- X

참고)메모리동적할당(Heap메모리)
#include 
① 메모리할당 : 변수 = (자료형 *)malloc(byte수); 
                변수 = new 자료형[byte수];
② 메모리반환 : free(변수);
                delete []변수명;


--------------------------------------------------------------

-------------------------------------------------------------

--------------------------------------------------------------

--------------------------------------------------------------
2)2차배열
자료형 배열명[첨자][첨자]={{....},{....}...};
                     행    열
 
ex)  int num[3][4]={{10,40,70,100},{20,50,80,110},{30,60,90,120}};
      int num[3][4]={10,40,70,100,20,50,80,110,30,60,90,120};

  
12. 포인터(pointer)
:메모리상 임의의 위치값
 포인터변수란 임의의 위치값(address)을 기억시킬 변수(4byte)

형식> 자료형 *포인터변수명;   <--단일pointer
         자료형 **포인터변수명;  <--이중pointer
                    (포인터변수의 주소값기억)
                    (& : 시작주소값)

※배열과 포인터

값    |  배  열  |   a[0]    a[1]     a[2]
       |----------------------------------------
       |  포인터 |   *a     *(a+1)   *(a+2)
       |            | *&a[0]  *&a[1]    *&a[2]
----------------------------------------------
주소 |  배  열  |  &a[0]    &a[1]    &a[2]
       |----------------------------------------
       |  포인터 |   a        a+1      a+2

ex)         
a[5]  ==> a[0]      a[1]      a[2]      a[3]       a[4]
          ------------------------------------------------
               k          o         r          e            a
          ------------------------------------------------
          100번지   101번지   102번지   103번지   104번지
           
          배열             포인터         의미
          -------------------------------------
          &a[2]            a+2          102번지
          a[3]             *(a+3)          e
          a[2][3]         *(*(a+2)+3)
          &a[2][3]       *(a+2)+3
          
13. 함수(Function)
 :  program을 단일화 시킬목적으로 사용
 ① 동일한 작업을 반복수행
 ② 변경, 삭제가 쉽다
 ③ 알아보기 쉽고, 코딩이 쉽다

 ※종류
 1. 내장함수 : 이미 내장된 함수 - #include를 시킴
                        ex) printf() - #include 
                             getch() - #include 

 2. 사용자정의함수 : user가 만든함수 - 선언해야함


 ※호출방식
 1. Call by name  : 인자값없고 이름만
 2. Call by value : 값전달
 3. Call by pointer(address) : 주소전달 
 4. Call by reference : 별명(Alias) ===> C++에 확장된 개념

<형식> 결과형  함수명(인자,인자....);
            ------
           void, int,float,char,char*....
 
       함수명();
       함수명(인자,인자...);
       변수 = 함수명();
       변수 = 함수명(인자,인자...);  

       return;        //제어값만 돌려줌(생략가능)
       return 변수;
       return 수식;    
       (주의!) return값은 오로지 1개
          ex) return 10;       -- O
               return 10,20;   ---X
         
-------------------------------------------------------------

  ----------------------------------------------------------------

<>
 ------------
  O.S영역(시스템영역)
 ------------
  응용P/G영역(코드영역)
 ------------
  초기화데이터  <---- extern, static (전역변수)
  영역(static)
 ------------
  근거리힙       
  (Near Heap)         
 ------------
  스택          <---- auto
  (stack)             (가장 안정적) (지역변수,매개변수/블럭종료시메모리반환)
 ------------
  원거리힙      <---- new/delete
  (Far Heap)          malloc()/free() 
                      프로그래머에의해 메모리회수











'코딩 > C' 카테고리의 다른 글

c언어 도서관리 프로그램  (0) 2019.11.14
c언어 연결리스트  (0) 2019.11.13
비쥬얼 스튜디오 2019 설치 visual studio  (0) 2019.10.04
c구조체와 연결리스트 등등  (0) 2019.07.15
c++ 은행 관리 프로그램  (0) 2019.06.18

댓글

Designed by JB FACTORY

1 2 3 4 5 6 7 8 1 1 2 3 4 5 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10