C언어 기초 Chapter 22~23: 구조체와 사용자 정의 자료형Chapter 22. 구조체와 사용자 정의 자료형 122-1. 구조체란 무엇인가?여러 자료형을 하나로 묶어 새로운 자료형을 정의하는 것하나의 논리적 단위로 표현 가능#include struct Student { char name[20]; int age; double grade;};int main(void) { struct Student s1 = {"Kim", 20, 3.8}; printf("이름: %s\n", s1.name); printf("나이: %d\n", s1.age); printf("학점: %.1f\n", s1.grade); return 0;}22-2. 구조체 배열 그리고 포인터구조체 배열..
C언어 기초 Chapter 21: 문자열과 문자열 관련 함수21-1. 스트링과 데이터의 이해문자열(String): 문자들의 배열 + 마지막에 \0 (널 문자)선언 방법:char str1[6] = {'H','e','l','l','o','\0'};char str2[] = "Hello"; // 자동으로 \0 포함출력 예제:#include int main(void) { char str[] = "Hello"; printf("%s\n", str); return 0;}👉 출력: Hello21-2. 문자열 단일 입력 함수gets (❌ 사용 지양: 안전하지 않음)fgets (✅ 안전한 문자열 입력)#include int main(void) { char str[20]; printf("문자열 ..
C언어 기초 Chapter 19: 함수 포인터와 void 포인터19-1. 함수 포인터와 void 포인터함수 포인터란?함수의 주소를 저장하는 포인터 변수함수도 메모리에 올라가기 때문에 시작 주소가 존재이를 이용해 함수를 변수처럼 전달하거나 동적으로 호출할 수 있음기본 문법반환형 (*포인터이름)(매개변수목록);예제: 함수 포인터 선언과 사용#include int add(int a, int b) { return a + b;}int main(void) { int (*fp)(int, int); // 함수 포인터 선언 fp = add; // 함수 주소 저장 int result = fp(3, 4); // 함수 포인터로 호출 printf("결과 = %d\n", re..
C언어 기초 Chapter 17~18: 다차원 배열과 포인터의 관계 완전 정리Chapter 17. 다차원 배열17-1. 다차원 배열의 이해와 활용2차원 배열 선언int arr[3][4]; // 3행 4열 배열초기화int arr[2][3] = { {1, 2, 3}, {4, 5, 6}};👉 메모리에는 행 순서대로 저장됨2차원 배열 출력#include int main(void) { int arr[2][3] = {{1,2,3},{4,5,6}}; for (int i=0; i출력:1 2 34 5 617-2. 3차원 배열선언 및 초기화int cube[2][2][2] = { {{1,2},{3,4}}, {{5,6},{7,8}}};👉 인덱스로 접근printf("%d\n", cube[1..
C언어 기초 Chapter 16: 포인터의 포인터 (이중 포인터 이해와 활용)16-1. 포인터의 포인터에 대한 이해기본 개념포인터도 변수이므로, 그 포인터의 주소를 저장하는 또 다른 포인터를 만들 수 있음이를 이중 포인터(double pointer) 라고 함선언 방식:int **pp;예제#include int main(void) { int a = 10; int *p = &a; // int형 변수 a를 가리킴 int **pp = &p; // 포인터 p의 주소를 가리킴 printf("a = %d\n", a); printf("*p = %d\n", *p); printf("**pp = %d\n", **pp); return 0;}👉 출력:a = 10*p = 10**..
C언어 기초 Chapter 14: 포인터와 함수 (배열 전달, Call by Value & Reference, const)14-1. 함수의 인자로 배열 전달하기배열 전달 기본함수에 배열을 넘기면, 사실은 배열의 첫 번째 원소 주소가 전달됨따라서 배열 크기 정보는 따로 넘겨줘야 함#include void printArray(int arr[], int size) { for (int i = 0; i 👉 출력: 1 2 3 4 5배열 원소 수정하기#include void addOne(int arr[], int size) { for (int i = 0; i 👉 함수 안에서 배열 값이 실제로 변경됨 (주소 전달 방식이기 때문)14-2. Call by Value vs. Call by ReferenceCa..