C언어 - Hello world

안태현·2025년 1월 25일

C언어

목록 보기
2/5

모든 프로그래밍의 시작

뭐 컴퓨터를 사던가 프로그램을 깔던가 그런 것 들을 제외하고

코딩을 처음으로 했을때 무조건 하는 hello world

처음 배웠을 때는 '이건 뭐 나중에 배우고 우선 작성해 나중에 알려줄게' 로 시작했던 hello world가 이젠 대충 뭐 어떻게 굴러가는지 알게 되었다.

Hello World

#include <stdio.h>

int main(void)
{
	printf("Hello World!")
    return 0;
}

1. #include <stdio.h>

#include <stdio.h>

1.1 gpt의 답변

#include   <stdio.h> 는 C언어에서 자주 사용되는 헤더 파일을 포함시키는 지시어입니다. stdio.h는 "Standard Input Output"의 약자로, 표준 입출력에 관련된 기능을 제공하는 라이브러리입니다.

1.2 나의 생각

이것은 라이브러리를 불러오는 것이다.

라이브러리를 왜 불러오느냐?

내 생각에는
나같은 초보들은 구현하기 힘든 것들을 쉽게 쉽게 사용할 수 있게 고수분들이 만들어 준 길이라고 생각한다.

printf("Hello World!")

위 함수를 사용하려면 그냥 우리가 사용할 수 있는 것은 아니다.

컴퓨터가 사람도 아니고 사람이여도 처음부터 말을 할 수 있는 것은 아니다.

컴퓨터가 기존 컴퓨터 사용자들의 불편함 및 원하는 방식으로 사용할 수 있게 컴퓨터가 우리에게 값을 줄 수 있게 만들어 놓은것들을 사용하는 것이다.

그 만들어 놓은것들을 라이브러리 라고 생각한다.

우리는 그중 stdio.h라는 라이브러리를 불러온 것 이다.

2. int main(void)

2.1 gpt의 답변

int main(void)

C언어에서 주 함수(main function)를 정의하는 구문입니다. 프로그램 실행 시 가장 먼저 호출되는 함수이므로, 모든 C 프로그램은 하나의 main 함수를 가지고 있어야 합니다.

각 부분의 의미는 다음과 같습니다:

int

main 함수가 반환하는 값의 자료형을 나타냅니다. 여기서 int는 정수형을 의미하며, 프로그램이 실행된 후 main 함수가 종료될 때 반환하는 값을 정수로 반환해야 한다는 것을 의미합니다.
프로그램의 종료 상태를 나타내는 종료 코드를 반환하는 데 사용됩니다. 일반적으로 0은 정상 종료를 의미하고, 다른 숫자는 오류가 발생했음을 나타냅니다.

main

main은 프로그램의 시작점을 나타내는 특별한 이름의 함수입니다. 프로그램이 실행되면, 운영 체제는 main 함수를 호출하여 프로그램을 실행합니다.

(void):

void는 main 함수가 매개변수를 받지 않음을 나타냅니다. 즉, 프로그램 시작 시 main 함수에 전달되는 값이 없음을 의미합니다.
만약 main 함수가 명령줄 인수를 받으려면 (int argc, char *argv[])와 같은 형식을 사용할 수 있습니다.

2.2 나의 생각

	변수 x -> f(x) -> 결과 값 y

이것은 우리가 배운 함수이다.
프로그래밍에서도 함수를 주로 쓰는데 조금 자세히 살펴보면

2.2.1 int

  • 이것은 자료형이라고 불리는 것이다.
  • 나중에가면 output 값이라고 함수의 결과값 y의 값의 자료의 형태가 어떻게 되어있는지
    숫자인지 아님 다른 형태인지 정해 두는 것이다.

2.2.2 main

  • C언어에서 꼭 필요한 함수가 main이라는 이름의 함수이다.
  • main이라는 이름의 함수가 없으면 실행이 되지 않는다.
  • C에선 이것을 프로그램의 진입점 이라고 한다.

2.2.3 (void)

  • 실험하다보니 길어진 곳 일반 함수와는 다르다.

  • void는 입력값을 받지 않는 다는 뜻이다.

  • 여기서도 자료형을 넣은 값 변수 x를 넣는다면 x를 활용하여

  • 무언가

    • printf("%(x의서식 지정자)",x)
    • x = 값;
  • 를 하기위한 값을 받아오는 곳이다.

  • 보통함수은 그렇지!!! 그러나 main함수에서의 이곳은 주의해야한다!!!!! (지금 나도 몰랐다)

  • 너무 길어서 따로 만들었다. --> 이유

3. printf("Hello, World!\n");

3.1 gpt의 답변

printf("Hello, World!\n");

printf는 출력 함수로, 괄호 안의 문자열을 화면에 출력합니다.
"Hello, World!"는 화면에 출력할 문자열이며, \n은 줄바꿈을 의미합니다.

3.2 나의 생각

printf 란 우리가 #include <stdio.h>에서 배운 라이브러리에서 가져온 함수다.
출력을 담당하는 함수이며, 꼭 ("여기") 안에 작성해야 한다.

#include <stdio.h>

int main() {
    int a = 10;
    float b = 3.14;
    printf("정수: %d\n", a);  // 정수 출력
    printf("실수: %f\n", b);  // 실수 출력
    return 0;
}

[출력]
정수: 10
실수: 3.140000

그리고 ; 는 세미클론 이라고 하는 것이다.
대부분의 문장에서 사용하지만 나중에 사용하지 않는 문장도 있다.
예를들어

if
for
while
...
주로 {문장을 감싸주는 곳} 이 끝날때는 쓰지 않는다고 알고있으면 편할 것 같다.(?)

4. return 0;

4.1 gpt의 답변

return 0; 은 main 함수가 종료될 때 프로그램이 정상적으로 실행되었음을 운영 체제에 알려주는 역할을 합니다.
0을 반환하는 것이 일반적인 정상 종료 코드입니다.

4.2 나의 생각

이것은 아까 (void) 보단 덜 골때리지만
원래의 함수에서는 그냥 반환값이다.

근데 main함수에서는 종료 코드로써의 의미를 가진다고한다.

return 0; 이면 정상적으로 종료되었다고 나타나고
return 1; 이면 오류로 인한 비정상적인 종료라고한다.
나머지는 사용자 정의 종료코드라고한다.

그렇다고 한다.

이유

int main(int a)
{
	printf("%d", a);
    return 0;
}

위 코드를 돌려보니 계속 1만 나오는것이다.
입력도못하고 말이야
어찌저찌 2를 넣어서 2가 나왔지만 3을 넣으니 또 2가 나오는것이다.
참 골때렸다.
이유는
int a = int argc
이것은 메인 함수에 전달되는 정보의 갯수를 의미를 하는 것이였다.
이것을 확인하려

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("명령줄 인수의 개수: %d\n", argc);

    // 명령줄 인수를 출력
    for (int i = 0; i < argc; i++) {
        printf("argv[%d]: %s\n", i, argv[i]);
    }

    return 0;
}

위 코드를 돌려보면

명령줄 인수의 개수: 4
argv[0]: C:\path\to\your\project\Debug\your_program.exe
argv[1]: arg1
argv[2]: arg2
argv[3]: arg3

이렇게 나온다.

나로썬 참 생각치도 못한 부분이다.
첫번째 인수(Argument)는 프로그램이 실행되는 파일의 위치가 무조건 들어가는 것이였다.

C:\path\to\your\project\Debug\your_program.exe hello world 123

를 실행한다면

명령줄 인수의 개수: 4
argv[0]: C:\path\to\your\project\Debug\your_program.exe
argv[1]: hello
argv[2]: world
argv[3]: 123

처럼 나온다.

그렇다 프로그램을 실행시킬 때 그 위치를 인수로 인식하는 것이다.

메인함수는 조심히 다루어야겠다

느낀점

역시 난 모르는게 많다.
대충 안다고 생각했는데 대충도아니다.
쉽게 정리할 것 같았는데 몇시간이 지났다.
쓰면서 현타도 살짝 왔버렸다.
이런거 정리하는사람들 대단한 것 같다.

아니 그리고 내 글에있는 곳에서 내 글 특정부분으로 링크 넣고싶은데 이거 어떻게 넣는거지?

걍 [링크이름](#링크 할 제목 이였다)
링크 제목 예시는

#1-include-stdioh
#223-void
#이유

이런것 처럼 모르겠으면 자동 생성된 목차에서 클릭하고 주소창 보면 나온다.

#### 부터는 링크가 안된다. (목차 생성도안됨)

profile
ENTP의 무지성 코딩

0개의 댓글