2024 08 03 개발일지 C언어 찍먹하기
오늘은 C언어에 대해서 간단하게 공부를 했다. 다음주 부터 C언어에 대해서 공부를 한다고 하니 미리 공부를 조금 했는데 사람들이 왜 C언어가 어렵다고 말하는지 알았다.
<C 언어란? >
C 언어는 1972년에 벨 연구소(Bell Labs)의 데니스 리치(Dennis Ritchie)가 개발한 범용 프로그래밍 언어라고 한다.
우리가 배우는 소프트웨어와 응용 소프트웨어를 모두 작성하는 데 사용되며, 특히 운영 체제, 컴파일러, 어셈블러, 텍스트 편집기 등의 시스템 소프트웨어를 개발하는 데 많이 사용된다고 한다.
C 언어는 현재까지도 많은 프로그래밍 언어의 기본이 되는 중요한 언어이니 이걸 확실하게 배운다면 C++ 이나 C# 배울때 기반을 확실하게 다질수 있을 것 같다
내가 배운 C언어의 특징이다.
<C 언어의 특징>
효율성: C 언어는 저수준의 메모리 접근이 가능하고, 하드웨어와 가까운 수준에서 프로그래밍할 수 있어 효율적인 프로그램 작성이 가능하다.
이식성: 다양한 플랫폼에서 컴파일이 가능하여 여러 시스템에서 사용할 수 있다.
풍부한 라이브러리: 다양한 표준 라이브러리와 함수들이 제공되어 개발자가 편리하게 사용할 수 있다.
구조적 프로그래밍: 함수, 조건문, 반복문 등을 사용하여 구조적으로 프로그램을 작성할 수 있다.
저수준 연산: 포인터를 사용한 메모리 직접 조작이 가능하여 저수준 프로그래밍이 가능하다.
<C 언어의 기본 문법 언어의 특징>
주석: 프로그램의 설명이나 메모 남길 때
// 한 줄 주석
/* 여러 줄 주석 */
데이터 타입: 정수형, 실수형, 문자형, 배열
// 정수형 변수
int a;
// 실수형 변수
float b;
// 문자형 변수
char c;
조건문: if, else if, else 사용
if (조건) {
// 조건이 참일 때 실행
} else {
// 조건이 거짓일 때 실행
}
반복문: for, while, do-while 문을 사용
for (초기화; 조건; 증감) {
// 반복할 코드
}
while (조건) {
// 조건이 참일 때 반복할 코드
}
do {
// 최소 한 번은 실행될 코드
} while (조건);
함수: 기능을 모듈화하여 작성할 수 있다.
int 함수이름(매개변수) {
// 함수 내용
return 반환값;
}
포인터: 메모리 주소를 가리키는 변수
int *p;
int a = 10;
p = &a; // a의 주소를 p에 저장
<C 언어의 활용 분야>
운영 체제 개발: 유닉스, 리눅스, 윈도우 등
임베디드 시스템: 마이크로컨트롤러, 임베디드 장치
게임 개발: 게임 엔진, 그래픽 렌더링
컴파일러 개발: 다른 언어의 컴파일러 제작
고성능 애플리케이션: 금융 시스템, 데이터베이스
대표적으로 이런것들이 있다고 하는데 아직 이런것들이 있구나... 싶은 생각이고 일단
간단하게 입출력하는 것부터 오늘 예습을 해봐야겠다라고 생각했다.
일단 나는 파이썬에서 배운 hello world를 출력하는걸 먼저 생각했다 가장 기본적인
print를 쓴다고 생각했지만 C언어에서는 사용 방법이 조금 달았다.
<C언어 출력>
이건 C언어에서 Hello World를 출력하는 코드이다

처음에 이렇게 한다고 했을때? 어?? #include <stdio.h> 이건 뭐야 그리고 printf? print와 다르네?
그리고 문장 끝났을때 ;으로 끝내야하는구나 그리고 return 0?
ㅋㅋㅋㅋ 완전 다르다.... 싶었다...
일단 오늘 여기까진 머리속에 입력한다고 생각하고 머리에 다넣어봐야겠다.
#include <stdio.h>
역할: 표준 입출력 라이브러리를 포함.
설명: stdio.h 파일에는 printf와 같은 입출력 함수의 선언이 포함되어 있다. 이 파일을 포함해야 printf 함수를 사용할 수 있다.
내가 이해한 것 : (라이브러리 포함) include <stdio.h>는 C 언어에게 "이 프로그램에서 printf라는 특별한 말을 사용할 거야!!"라고 말하는 것이라고 한다.
stdio.h라는 파일에는 printf 같은 단어가 들어가 있다고 한다.
아.. 이걸 무조건 넣어야하는구나!!
int main()
역할: 프로그램의 시작 지점.
설명: 모든 C 프로그램은 main 함수에서 시작. int는 함수가 정수를 반환한다는 것을 의미.
내가 이해한 것 :(프로그램 시작점) int main()는 "여기서부터 프로그램을 시작할 거야!"라고 알려주는 부분이다. 모든 C 프로그램은 여기서 시작한다고 한다
main() ... 메모
{ } 중괄호
역할: 코드 블록을 정의합니다.
설명: 중괄호 { } 사이에 있는 코드들이 main 함수의 본문.
내가 이해한 것 : 중괄호 사이에 있는 내용들이 실제로 사용되는 코드
printf("Hello, World! \n");
역할: 화면에 "Hello, World!"를 출력한다.
설명: printf 함수는 화면에 텍스트를 출력하는 함수.
"Hello, World!\n": 출력할 문자열
\n은 줄 바꿈을 의미
세미콜론 (;): 각 명령문의 끝에 사용
내가 이해한것 : 세미콜론이 각 명령문의 끝에 사용되서 종료하게 만드는거구나 이건 html 이랑 css 배울때도 꼭 썻던 것이다.
return 0;
역할: 프로그램을 종료하고 운영 체제에 0을 반환.
설명: main 함수는 정수를 반환하는데, 0은 프로그램이 성공적으로 종료되었음을 의미.
내가 이해한것 : 프로그램 종료: return 0;는 "프로그램이 잘 끝났어!"라고 말해주는 부분이라고 한다.
컴퓨터에게 모든 것이 잘 끝났다고 알려준다.
하지만 return 0;을 사용하지 않는 경우, C 표준에 따르면 main 함수의 끝에 자동으로 return 0;이 추가된 것으로 간주된다. 즉, return 0;을 생략해도 프로그램은 정상적으로 종료되며, 컴파일러는 이를 명시적으로 추가하지 않아도 문제가 되지 않는다!!
그러나 이 동작은 C 표준(특히 C99와 그 이후 버전)에서 정의된 것이며, 명확한 종료 상태를 반환하는 것이 좋은 프로그래밍 습관이라고 배웠다.
오늘은 간단한 print 함수부터 이렇게 다르다니... 내일부터는 조건문이나 반복문을 공부해봐야겠다.