c프로그래밍/Class

C언어 3주차

NetStat 2025. 3. 24. 16:28
반응형

https://www.yes24.com/Product/Goods/117931721

출처

 

Smile Han의 C언어 프로그래밍 - 예스24

Smile Han의 C언어 프로그래밍

www.yes24.com

 

stdio 와 main

printf("asd");​

c에서 이렇게 한줄만 쓰면 작동이 안된다

파이썬은 가능한데 자바랑 c는 안된다..

 

error C2440: '초기화 중': 'const char [4]'에서 'int'(으)로 변환할 수 없습니다.

F4로 디버깅을 하면 위의 문구가 출력 되는걸 볼수있다

int main() {
	printf("asd");

}

이제 int 메인을 시작해 안에 프린트 문구를 넣으면

error C3861: 'printf': 식별자를 찾을 수 없습니다.
 error C2059: 구문 오류: ';'
error C2059: 구문 오류: '}'
error C2143: 구문 오류: ';'이(가) '}' 앞에 없습니다.

이렇게 오류가 나온다.

 

#include<stdio.h>

int main() {
	printf("asd");

}

맨 윗줄에 #include 포함한다 <stdio.h> std는 스탠다드 io는 입출력

을 넣어주면 정상 작동한다

 

#include<stdio.h>

int main() {

	return 0;
}

이게 C언어의 기본 틀이 되는데 

C 언어 표준에서 main 함수의 반환 타입을 명확하게 int로 규정하고 있기 때문에 이렇게 써야하며 

 

운영체제는 프로그램이 종료될 때 정수 값(종료 코드)을 기대하고

이 값으로 프로그램의 실행 성공 여부를 판단합니다.

보통 0은 성공, 0이 아닌 값은 오류를 의미함

 

메인함수는 중요하지만 모든 함수에 딱 한번만 존재해야한다

c언어의 시작점이기때문이다.

정리하면 c언어는 메인에서 시작하니까 꼭 main이 있어야하며 한개만 있어야한다

 


 

예약어(reserved word, keyword)

- 컴파일러에 의해 미리 의미가 정해져 있는 32~44 개의 단어

- 항상 소문자로만 사용(C99 이전)

- C99에서 추가된 예약어

 

ex) inline, restrict, _Bool, _Complex, _Imaginary

 

c언어는 대문자와 소문자를 구분한다 

항상 유의해서 사용해야한다.

 


토큰(token) 과 구두점

 

- 토큰 

 - C프로그램을 구성하는 기본 단위

 - 예약어(reserved word, keyword):int, if등 44개

 - 연산자(operator) : + . / 등 40개

 - 구두점(punctuator) : 변수, 함수, 배열, 구조체 등의 이름

 - 리터럴(literal) or 상수 (constant) : 10, 3.5

 - 문자열(string) : "hello word"

 

- 구두점

 - 토큰을 구분하기 위해 사용하는 기호로 50여 개가 있는데 40여 개는 연산자로 사용

 - [], {}, (), *, = .......

 


C언어 구두점 및 기호 표

구두점 명칭 용도 예

[ ] bracket, 대괄호 배열크기 지정 char ch[10];
{ } brace, 중괄호 블록(제어문, 함수)<br>구조체, 틀<br>배열 초기화 if(x>y) { }<br>int num[3]={1, 2, 3}<br>struct SCORE { };
( ) parenthesis, 소괄호 제어문의 조건식<br>함수의 매개변수 목록 if(x>y)<br>printf("AAA");
* asterisk, 별표 포인터 변수 선언 char *name;
, comma, 쉼표 변수, 함수 선언<br>함수의 매개변수 나열<br>배열 초기화 int x,y;<br>sum(x,y);<br>int num[3]={1, 2, 3}
; semicolon, 세미콜론 문장의 끝 for문의 구성 구분 int num;<br>for(i=0;i<10;i++)
= equal sign 변수, 배열 초기화 int num[3]={1, 2, 3}
: colon, 콜론 goto문에서 분기하는 레이블<br>case문의 레이블 다음 AAA:<br>case 0 :
... ellipsis, 생략부호 함수원형에서 매개변수 생략 int printf( const char *format [, argument]... );
# sharp, 샵 전처리기 #include<br>#define

 

 


주석문(comment)

- 프로그램 중에 설명문을 작성 할 때 사용하는 문장

- 프로그램의 수행과 무관하게 프로그램의 목적, 수행과정, 알고리즘에 대한 설명

- 자신이나 다른 프로그래머에게 프로그램의 이해를 돕기 위한 설명문

- 컴파일러는 무시하는 부분

- "/*"로 시작하고 "*/"로 종료하며 사이에 있는것들은 주석처리 된다.

 

 

#include<stdio.h> //std io 스탠다드 아아오
	
int main() { // 메인함수 시작부분이며 int
	printf("aaaaaaa"); // 프린트문
	return 0; // 리턴값은 0 c99이후로는 생략해도 되지만 관례상 쓰자
}

 

 

여러줄 주석 하는 방법

컨트롤 + / 

또는

컨트롤 + k + c 

편한건  컨트롤 + / 가 편하다.


printf() 함수 사용법

한글 폰트라서 원으로 나온다 \ = ₩

 

#include<stdio.h>

int main() {
	printf("c언어\n ");
	printf("\\""사용");
	return 0;
}

\n 은 엔터라고 생각하면된다

다음 프린트문이 다음 줄에 출력됨

여러번 사용해도 문제가 생기지 않는다.

C언어 백슬래시(\ 이스케이프 시퀀스) 관련 표현 표

- 이스케이프 시퀀스(escape sequence)는 탈출 문자 또는확장 문자열 이라고도 함

- 역슬래시 \ 와 영문자나 특수문자로 이루어진 문자 조합

\\ 백슬래시 문자열 내에서 백슬래시 자체를 표현 printf("C:\\Program Files\\");
\n 줄바꿈 새 줄로 이동 printf("Hello\nWorld");
\t 수평 탭 삽입 printf("Name:\tKim");
\r 캐리지 리턴 커서를 현재 줄의 맨 앞으로 이동 printf("Hello\rWorld");
\" 큰따옴표 문자열 내에서 큰따옴표 표현 printf("그가 \"안녕\"이라고 말했다");
\' 작은따옴표 문자열 내에서 작은따옴표 표현 printf("It\'s my car"); 또는 char c = '\'';
\? 물음표 문자열 내에서 물음표 표현 printf("Hello\?");
\a 경고음 시스템 경고음 발생 printf("\a");
\b 백스페이스 커서를 한 칸 뒤로 이동 printf("Hello\b");
\f 폼 피드 페이지 넘김 printf("Page 1\fPage 2");
\v 수직 탭 수직 탭 삽입 printf("Line1\vLine2");
\0 Null 문자 문자열의 끝을 나타냄 char str[] = {'H', 'i', '\0'};
\xhh 16진수 16진수 값(hh)에 해당하는 문자 printf("\x41"); // 'A' 출력
\nnn 8진수 8진수 값(nnn)에 해당하는 문자 printf("\101"); // 'A' 출력
\\\\ 매크로 줄바꿈 전처리기에서 긴 매크로를 여러 줄로 나눌 때 사용 #define LONG_MACRO This is a very \\\n long macro

 


문제(리포트)


문제 1번

 


문제 3번

 

  • 매개변수: 함수에 값을 전달하는 변수이다 함수를 호출할 때 값을 넘겨줄 수 있도록 정의되는데 예를 들어, add(int a, int b)에서 a와 b는 매개변수이다
  • 반환값(리턴값): 함수가 처리한 결과를 반환하는 값이다 함수에서 어떤 작업을 하고 나서 그 결과를 돌려줄 때 사용됩니다. 예를 들어, int add(int a, int b) { return a + b; }에서 a + b가 반환값입니다.

문제 4번

기본적인 틀은 3가지가 있다

1. 헤더 #include<stdio.h>

2. main 함수

3. 기타 함수들 

#include<stdio.h> // 입출력 관련 함수 사용을 위한 헤더 파일

int main(void){
	printf("hello world) //프로그램 실행코드
    return 0; // 프로그램 종료 코드 
}

 


문제 5번

// <- 여기부터 주석

/* 사이에 주석 */

 

#include <stdio.h>

int add(int a, int b) {  // a, b는 매개변수
    return a + b;         // a + b가 반환값
}

int main() {
    int result = add(3, 5);  // 3과 5를 매개변수로 전달
    printf("결과: %d\n", result);  // add 함수의 반환값을 출력
    return 0;
}

 

 


전달인자(argument)와 매개변수(parameter)

 

  • parameter (매개변수): 함수가 정의될 때 함수에 전달받을 값을 받을 변수
  • argument (인수): 함수를 호출할 때 실제로 전달하는 값

 

  • 함수 정의에서 int add(int a, int b)에서 a와 b는 parameter입니다.
  • 함수 호출에서 add(3, 5)에서 3과 5는 argument입니다.
#include <stdio.h>

// 함수 정의, 매개변수 a와 b
int add(int a, int b) {
    return a + b;  // 매개변수 a와 b를 더한 값을 반환
}

int main() {
    int result = add(3, 5);  // 함수 호출, 3과 5가 인수 (arguments)
    printf("결과: %d\n", result);  // 결과 출력
    return 0;
}

 

 

 

 

 

쉽게 설명하자면

#include<stdio.h>
int main1(int a) { // <- main1(int a) 는 파라미터다
	printf("%d", a);
	return 0;
}

int main(void) {
	printf("asd");
	main1(10); // <- 여기서 main1을 호출하며 값을 10을 넣어준다(전달) 이게 아규먼트다
		return 0; 
}

 

 


정리

전형적인 C 프로그램

 C 프로그램의 기본 툴

 - ANSI C에서 권장하고 있는 표준 틀과 C99 이후 스타일

int main(void){
코드 작성
return 0;
}
int main(void){
코드 작성

}

 

- 예약어와 토큰

 - 토큰은 c프로그램을 구성하는 기본 단위

- 예약어, 연산자, 구두점, 식별자 , 상수 , 문자열

 

반응형