Study/C Language 11

c언어 프로그램

나 급 궁금한게, 사실 지금 사람들이 흔히쓰는 어플이나,요새 os들보면 다 파이썬, 자바, 요런 얘들 기반인데, c는 실제 우리가 쓰는 일상적인 프로그램에서 어디서쓰여?    좋은 질문이야! 🤓 사람들이 많이 쓰는 파이썬이나 자바는 확실히 우리 눈에 보이는 앱 개발이나 웹 서버, 데이터 분석 같은 데 많이 쓰이지만, C 언어는 그 밑바닥에서 강력하게 작동하고 있어. 예를 들어볼게:📌 1. 운영체제 (Operating Systems)Windows, Linux, macOS 같은 운영체제(OS)는 대부분 C 언어로 작성되었어.특히 Linux 커널은 97% 이상이 C 언어로 작성되어 있고, 일부 어셈블리가 포함되어 있어.운영체제의 기본적인 기능들, 예를 들어 메모리 관리, 파일 시스템, 네트워킹, 프로세스 ..

Study/C Language 2025.03.22

QUIZ

#include #include #include int main() { int sz = 0x30; char *buf = (char *)malloc(sizeof(char) * sz); puts("Hello World!"); printf("Education + Hack = ?\n"); fgets(buf, sz, stdin); if (!strncmp(buf, "DreamHack", 9)) printf("Welcome Hackers :)\n"); else printf("No No :/\n"); return 0;  sz 입력 버퍼 크기 지정 48바이트buf 포인터 변수에 malloc()함수로 48바이트의 크기 메모리 동적 할당fgets()함수로 사용자 입력 stdin 받아서 buf에 저장..

Study/C Language 2025.03.21

int* arr[3]의 의미

📌 int* arr[3]의 의미이거는 **"포인터 배열"**이야. 즉, 배열인데, 배열의 요소가 정수를 가리키는 포인터(int *) 라는 거지!✅ 1. int* arr[3]은 어떻게 동작할까?int *arr[3]; // 포인터가 3개 들어 있는 배열이 코드는 **"정수를 가리키는 포인터 3개를 저장할 수 있는 배열"**을 선언하는 거야.즉, arr 자체는 배열이지만, 그 요소들은 **포인터(주소를 저장하는 변수)**라는 거지.🏠 비유로 이해하기!이걸 아파트 개념으로 보면:arr 자체는 3층짜리 아파트각 arr[i]는 방(정확히는 방의 위치를 가리키는 포인터)하지만 방 안에 실제 데이터(정수)는 없음! 그냥 다른 곳에 있는 정수를 가리키는 포인터들이 들어 있음.즉, 각 방(포인터)이 다른 주소를 가리키..

Study/C Language 2025.03.12

Comparison : base64 encoding & decoding program

빡공팟에서 c언어 공부하다가 base64 encoding decoding program 소스코드 작업중 드림핵 요 문제 보고 소스 최적화랑 buffer 개념 확실히 와닿음. c언어 책 삼일일만에 400페이지 읽기는 무리였다....200페이지 읽은 나에게 칭찬을 하자과제 폭탄! 언제 책 다 읽어 엉엉..c언어만 진득히 파고싶어도 바로 파이썬 코드 짜야하죠~ 껄껄 최대한 시간 쪼개서 공부해야지!! 책은 잘못없다...따라가지못하는..한번에 이해못하는 내 머리가 문제다   아래가 내가 지피티랑 같이 짠 코드#include #include // Base64 테이블const char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123..

Study/C Language 2025.03.12

char *name vs char name[]

🚀 char *name vs char name[] 메모리 관점에서의 일상 비유💡 메모리를 "도서관"으로, 문자열을 "책"으로 비유해 볼게요!📌 char *name (포인터 방식)📖 도서관에서 책을 "대여하는" 방식✔ 포인터는 책을 직접 복사하지 않고, 도서관에서 "책의 위치(참조)"만 가져옴!✔ 즉, 같은 책을 여러 번 복사하지 않고, 원래 있는 책을 가리킴.📝 비유 예시:🔹 "물병자리"라는 책이 도서관에 있음.🔹 char *name = "물병자리"; → 책을 직접 들고 오는 게 아니라, 도서관에 "어디에 있는지 주소"만 저장🔹 모든 사람이 같은 책을 읽으려면 그냥 같은 주소를 참조하면 됨 (불필요한 복사 없음)🚀 장점:✔ 메모리 절약 → 같은 문자열을 여러 개 복사할 필요 없음.✔ 빠른..

Study/C Language 2025.03.08

int arr[3] = {1};가 {1, 0, 0}으로 인식되는 이유

🚀 int arr[3] = {1};가 {1, 0, 0}으로 인식되는 이유int arr[3] = {1};위 코드에서 arr[3]의 모든 요소가 자동으로 초기화되는 이유는 C 언어의 배열 초기화 규칙 때문입니다.🔍 동작 원리: C의 배열 초기화 규칙명시적으로 값을 준 요소만 초기화된다.나머지 요소는 0으로 자동 초기화된다.C 표준에서 배열을 일부만 초기화하면 나머지는 0으로 채운다.Zero Initialization (자동 0 초기화) 원칙 적용!📌 컴파일러의 해석 과정int arr[3] = {1};이렇게 선언하면 컴파일러가 아래처럼 확장해서 처리:int arr[3] = {1, 0, 0}; // 나머지 요소는 자동으로 0으로 초기화됨이유?{1}만 주어졌으므로, arr[0] = 1으로 할당됨.arr[1..

Study/C Language 2025.03.08

C언어에서 main() 함수 이름을 바꿀 수 있는가?

궁금한게 c언어에서 main()함수는 어떻게 보면 얘도 그냥 main이지만, 내가 이름 watermelon()으로 바꾸고 main역할하게 써도 문제 없지? 약속이고, 정해진 이름이지만, 결국 이것도 alias가 가능하다는건가?    📌 C언어에서 main() 함수 이름을 바꿀 수 있는가?결론부터 말하면, "일반적인 실행 환경에서는 main()이 필수지만, 특정 조건에서는 이름을 바꿔서 사용할 수도 있다."✅ 1. main()이 필수인 이유C 언어에서 main() 함수는 프로그램의 진입점(entry point) 역할을 한다.즉, 운영체제(OS)가 프로그램을 실행할 때 가장 먼저 호출하는 함수가 main()이다.📌 즉, main()은 C 표준에서 약속된 함수이므로 필수!int main() { pri..

Study/C Language 2025.03.04

씹어먹는 C언어 혼자 실습 (2)

for(;;) 무한반복실험 재밌다.. 광기스럽다    for문 공부하는데 문제 풀이에서 벽을 만났다. 이거 역시 응용은 늘 어렵다.. 수학문제가 그렇듯.. 생각 해보기문제 1 (난이도 : 中)N 줄인 삼각형을 출력한다. 단, 사용자로 부터 임의의 N 을 입력 받는다. 아래는 N = 3 일 때의 출력 예시 이다. * ******** 열심히 기초 예제들 뒤적이며 스스로 코드를 적어봤다. 역시 이론과 실전은 다르다.#include int main() {int i = 0, n = 0;printf("몇개의 *수를 입력받을 건가요?");scanf_s("%d", &n);for (i = 0; i  하니까임의의 n을 넣으면 n만큼***나온다 이걸 어떻게 옆으로 나오게 하지.. 홀수만큼 나오는데 나누기를 해서 나머지가 ..

Study/C Language 2024.10.16