컴퓨터를 공부하고자 마음먹은지 N일차

[4일차](홍정모의따배c)C기초함수 본문

🖥C

[4일차](홍정모의따배c)C기초함수

졸린새 2020. 9. 12. 03:04
728x90

[4일차](홍정모의따배c)C기초함수

훑어보기

#include <stdio.h>  //전처리기(컴파일하기 전에 처리한다는 의미다)-<문장

int main(void) //main 함수 정의시작. (문장
{    //영역 혹은 블럭 scope의 시작.  /얘네들이
    int a; //변수선언
    int b; //변수선언
    int c; //변수선언
    
    a = 1; //변수에 값 대입
    b = 2; //변수에 값 대입
    c = a + b; //변수에 연산 결과 대입
    
    printf("Result in %i", c);// 함수호출(call or invoke)
    
    return 0; //출력을 내겠다.결과 값을(value) 반환(return)
}   // 영역의 끝. (문장.       /한덩어리다

변수를 선언하는 방법

int main(void) //main이라는 함수는 단하나만 있어야 하고 시작점에 있어야 하고 바꿀 수 없다. void는 들어오는게 없다는소리 int는 정수 자료형
{   //main이라는 함수의 몸체
    //변수 이름은 원하는데로 바꿀 수 있다
    //ex) int num_apples; 하지만 숫자가 앞에 못온다. 대문자 소문자 둘 다 쓸수있지만 대문자 소문자 둘다 구분된다, 특수기호 안된다. 초보때는 앞에 언더바를 넣지 말자. 그리고 함수명도 변수명으로 쓸 수 없다.
            // ex)a와 A가 다른다. 변수명 사이에 빈칸이 있으면 안된다. 언더바를 이용하자 언더바대신 빼기'-'도 안됨
    int x; //declaration 이 x라는 공간에 접근할 수 있다 라는 뜻이다.
    int y;
    int z; //변수선언을 코드 중간중간 끼워넣어도 된다. 예를들면 y = 2; 앞라인에 끼워 넣을 수 있단 말씀 ->
    //한줄씩 int x; 말고 ->int x, y, z; 로도 가능 하지만 같은 자료형끼리만 이렇게 선언할 수 있다.
    
    x = 1; //=는 사용하고있는 메모리의 값으로써 1을 대입한다는 얘기 영어로 assignment
    y = 2; //
    
    z = x + y; //x+y를 괄호로 묶어서 우선순위를 정할 수 있다.
    //-> int x = 1, y = 2, z = x + y; 로도 선언 가능 처음 x, y, z;도 생략가능 x y메모리를 할당 받음 과 동시에값도 대입하는 코드
    // z = x + y; 는 생략 안하는것이 좋다 연산 하는부분은 아래와 같이 분리를 하는게 좋다 실수가 잦아지니까
    // int x = 1, y = 2, z;
    // int z = x + y;
    return 0; //0이라는것은 정수중 하나니까
} //여긴 문법상 세미콜론 안붙여도된다.

printf()함수의 기본적인 사용법

강의 전 문제

콘솔창에 I am Ironman 이라고 띄워보아라 출처-인프런 홍정모의 따라배우는c

처음 엑스코드로 c 프로젝트를 개설하면 hello world를 띄워주는 함수를 간접적으로 알려준다.

printf라는 함수를 일단 라이브러리에서 가져와야 하기 때문에

#include <stdio.h>

를 첫 라인에 입력한다

그리고 한덩어리를 만들기위해

int main()
{
}

요렇게 덩어리를 만들어 주고

int main()
{
		printf("I am Ironman");
}

헬로월드 대신 아이엠 아이언맨으로 바꿔준다!

어라랏 근데 저렇게했는데

그냥 0으로 뜬다 뭐가 문제인가 다시 비교해보았다.

main() 요안에 void를 안집어 넣었다

void가 뭐지?!?! 강의를 통해 알아봐야겠다

void를 main에 집어 넣었더니

#include <stdio.h>

int main(void)
{
		printf("I am Ironman);
}

컴파일 해보자

짠 아이언맨이 등장했다. 가슴이 웅장해진다..

강의전 의문

  • void는 무슨 역할을 하나? printf는 어떤함수인가?

#include <stdio.h> // printf함수를 쓰기위해서 stdio.h를 써야하구나!

int main(void)
{
    //print formatted (formatted는 형식을 맞춘다는 뜻이다)
    //printf("I am Ironman"); //출력할 내용이 괄호 안에 쏙들어간다.
    //그런데 영화에선 The truth is... 하고 한참 쉬고 자기가 아이언맨이라고 한다
		// 어떻게 따로 얘기하게 할까?
   // printf("The truth is...\nI am Ironman.\n"); //printf에서 \n은 줄을 바꿔준다는 뜻이다
   // *escape sequence라고 함 \n다음에 한 칸을 띄우면? 줄을 바꾸고 한칸띄운 상태에서 컴파일 된다.
   // 좀 깔끔한 걸 원하면 마지막 문장끝날때도 \n을 넣어도 된다
    
    //그런데 따옴표를 출력하려면 어떻게 할까? printf안에 따옴표를 넣어도 안된다 힌트는 \n에 있다
    printf("\"The truth is..\nI am Ironman.\n\""); // 특수기능문자 말고 문자 그대로 
    //출력하고 싶다 그러면 앞에 \를 붙이고 따옴표를 붙이자 그런데 마지막 따옴표는 따옴표 전에\를 해야한다
    // 그렇다면 printf함수를 두줄로 써서 하면 안되나? 안된다 그냥 붙어서 나온다 \"\"로 알고있자.

}

#include <stdio.h> // printf함수를 쓰기위해서 stdio.h를 써야하구나!

int main(void)
{
    int x, y, z;
    
    x = 1;
    y = 2;
    
    z = x + y;
    
    //printf("The answer is z");// 이렇게 실행을시키면 그냥 The answer is z가 나온다
    // 정말 솔직하고 단순한 함수다.
    // 나는 연산을 해서 나온 결과를 원한다..! 따옴표 안에 있으면 무조건 문자로 취급한다 컴퓨터는!
    //printf("The answer is %i", z); //문자 옆에 연산 값을 알고싶다면 %i를 넣자.
    //따옴표를 닫고 원하는 연산 식이나 원하는 변수의 값을 넣자 %d 도 됨
    //1 + 2는 3다 라고 표현하고 싶다면?
    printf("%i + %i =%i", x, y, z); //%i 를 나열하면 뒤에 나열한 변수가 순서대로 들어간다
    //교수님이 printf("/a");를 해보라고 하신다
    printf("\a"); //띵동하고 소리나야하는데 xcode에선 안되나보다
}

함수 만들기

#include <stdio.h>

void say_hello(void) //void는 아무것도 없다 say_hello 라는 함수를 만든다 함수가 함수를 호출하는 구조
{
    printf("Hello world\n");
    
    return;  //리턴타입이 void일경우 return 안써도 됨
}
int main()
{
    say_hello(); //출력을 받을게 없다
    
    return 0;
    
}

#include <stdio.h>

void say_hello(void); //prototyping, function declaration
int main()
{
    say_hello(); //출력을 받을게 없다
    
    return 0;
    
}
void say_hello(void)//function definition
{
    printf("Hello world\n");
    
    return;
}

이렇게 바꿔도됨

Comments