본문 바로가기
개발&코딩/C

C언어의 기초적인 구조와 자료형 그리고 입출력

by 우동이 2020. 9. 9.
300x250

C언어 코딩에는 주로 Visual Studio를 사용합니다만

가벼운 연습용으로 사용할 수 있는 Dev-C++이라는 프로그램이 있습니다.

해당 프로그램으로 연습하는 걸 추천드립니다.

 


1.C언어의 기초구조

#include <stdio.h> // 헤더파일 선언

int main() // main 함수
{
    return 0; // 코드 종료
}

>>>

C언어는 오래된 언어라 함수지향적 코딩입니다.

요즘은 대부분 객체지향형 언어인 Java나 Python을 많이 사용하는데

함수 지향적 언어가 무엇이냐면

언어 자체에 기본적인 틀이 존재하며

이는 함수의 형태로 이루어져 있고 코딩은 그 틀에 맞춰 이루어져야 한다는 걸 뜻합니다.

 

위 코드는 C언어의 가장 기초적인 int main() 함수가 보이는 기본 코드입니다.

main() 함수는 내가 실행할 코드가 주로 올라가는 가장 메인 함수라는 뜻이며

 

#include <stdio.h>라는 문장은

헤더파일이라는 것을 사용하겠다 선언한 것입니다.

 

. h 확장자는 헤더 파일을 의미하며

헤더 파일에는 각 헤더 별로 분류된 함수를 사용할 수 있는 코드가 들어있으며

이 헤더들을 #include(선언) 해주어야 헤더 안의 함수를 사용할 수 있습니다.

 

또한 C언어는 대소문자를 구별하며

문장의 끝은 ;(세미콜론)으로 끝나야 하며

 

return 0;는 main() 함수의 모든 코드가 실행된 후 종료된다는 걸 뜻합니다.

 


​2. printf()를 이용한 간단한 출력

#include <stdio.h> // 헤더파일 선언

int main() // main 함수
{
    printf("10 + 20 = 30"); // 10 + 20 = 30 문장을 출력
    return 0; // 코드 종료
}

>>> 10 + 20 = 30

printf()는 stdio.h 헤더에 선언된 출력 함수입니다.

 

int printf(const char * restrict format, ...);

 

함수의 원형은 위 코드와 같으며

입력된 문자열을 출력하며 format은 서식화된 출력

즉 자신이 입력한 데이터 값에 따라 맞춰서 출력할 수 있다는 걸 의미합니다.


3. C언어의 자료형 그리고 자료형 별 출력 법

// int 형(정수형) 10 20 6225 38204  204582034710 -1 -30
// double,float형 (실수형) 3.141592 5.000000
// char,str형 (문자,문자열형)

#include <stdio.h>

int main()
{
    int a=1;
    double b = 1.23;
    char c='s';
    char d[10]="love";

    printf("%d, %lf, %c, %s",a,b,c,d);
    return 0;
}

>>> 1, 1.23, s, love

맨 위 // 앞에 적힌 글들은 주석이며

주석이란 코드에는 영향을 끼치지 않고 코드 가독성을 위해 적는 글입니다.

 

그리고 C언어에서 대표적으로 쓰이는 자료형 정수형(int), 실수형(double, float), 문자형(char) 네 가지가 있습니다.

각 자료형 별 출력 문자열은 아래와 같습니다.

 

  • 정수형 - int - %d
  • 실수형 - double - %lf
  • 문자형 - char - %c
  • 문자열형 - char [] - %s

여기서 문자열형이란 문자 단일이 아닌 2 이상의 크기를 가진 문자의 집합을 의미합니다.

단일 문자 - %c

문자열  - %s


4. 입력 함수 scanf()

#include <stdio.h>

int main()
{
    int a=0;
    int b=0;

    printf("a와 b의 값을 입력하시오 >> ");
    scanf("%d%d",&a, &b)

    printf("a와 b의 합한값 >> %d",a+b);

    return 0;
}

>>> a와 b의 값을 입력하시오 >> 10, 20
>>> a와 b의 합한값 >> 30

scanf() 함수는 입력 함수입니다.

Dev-C++ 프로그램은 오래되어서 scanf() 함수를 사용해도 따로 오류가 발생하지 않지만

이 scanf() 함수는 버퍼오버플로우 취약점이 존재해 쓰이지 않는 함수입니다.

최신화된 컴파일러에서는 사용이 안되니 scanf() 대신에 scanf_s() 함수를 주로 사용합니다.

 

하지만 scanf() 나 scanf_s() 함수는 입력의 기능을 가지고 있다는 점에서 그냥 진행하겠습니다.

 

함수의 원형은 아래와 같습니다.

int scanf(const char * format, [address])

위에서 배운 자료형 별 변환 문자열에 대응하는 자료형을 가진 변수에

값을 입력받아 저장하고

아래 출력문에서 해당 변수를 출력하면 자신이 입력한 값이 출력되는 원리입니다.

 

위 코드에서 scanf() 안을 보면 변수 앞에 & 문자가 보일 텐데

이는 주소를 뜻하는 포인터 문자열로

변수의 주소에 값을 저장하는 방식이기 때문입니다.

 

함수 원형에서 두 번째 인자 값이 [address]인 이유도

주소에 저장한다는 것을 의미하기 때문입니다.

300x250

댓글