본문 바로가기

분류72

printf 구현 아이디어 모음 int printf(const char *format, ...) : format이라는 이름의 문자열 상수로 '서식 문자열이라 부름', 뒤에 ...은 (ellipsis)라 하며 컴파일러에게 이후의 인수에 대해서는 개수와 타입을 점검하지 않도록 하는데 이 기호에 의해 가변 인수가 가능해진다. 뭔가 말이 어려운데 쉽게 말하면 컴파일러가 무관심으로 두고, 함수가 알아서 잘 인수의 정확한 타입을 판별하여 꺼내 쓰라는 것이다. 자신이 출력한 모든 문자에 대한 길이를 반환한다. 포인터로 문자열을 가리켜도 마찬가지(해당 문자열의 길이 출력) (숫자가 백의 자리면 3을 출력) (개행도 하나로 생각) 가변 인수 함수 (stdarg.h에 선언) va_list (ap) : 스택에 있는 인수를 읽을 때 포인터 연산을 해야하기 .. 2023. 4. 26.
42서울(42Seoul)-이노베이션 아카데미 결과 목표 달성했다! 처음 목표 La Pisicine 합격 후 본 과정 참여 La Pisicine 이전 과정 온라인 테스트 응시 -> 라파신 선착순 신청 -> 3일 후 신청 확정 -> 라파신 1일 전 직접 가서 등록 온라인 테스트는 기억력(박스에 불 들어 오는 것 맞치기, 4분), 로보즐(비행기 사전 명령키로 움직이기, 2시간) 난이도 자체는 어렵지 않다. 물론 편법도 존재한다. (동영상 찍기, 미리 그림 그려놓기, 문제 찾아보기) 나의 경우 로보즐 중간에 문제 하나가 막혀 말도 안되는 논리를 대입 했는데 통과했다.(아직도 왜 통과인지 모르겠다) 그 밖의 신청은 수강신청보다 쉽다. La Pisine 과정 4주 진행하는데 빡셌다. 난 c만 포인터 개념만 알고 갔는데 힘들었다. 처음에 shell을 다루는데 .. 2023. 3. 9.
구조체(쉽게 풀어쓴 C언어 EXPRESS) 용어정리 본문정리 구조체란 무엇인가? 구조체는 서로 다른 자료형들을 하나로 묶는 것이다.(여러 개의 같은 자료형을 묶는 것이 배열) 구조체의 선언, 초기화, 사용 구조체는 서로 다른 자료형의 변수들을 묶어서 새로운 자료형을 만드는 것이다. 태그란 구조체의 이름이다. 그 안에 있는 것을 구조체 맴버라고 한다. 구조체 선언은 구조체의 형태만 정의한 것이다. 즉 구조체를 이용하여 변수를 만들지 않았음을 알아야 한다. 구조체 변수의 초기화는 배열과 비슷하다. 구조체 맴버에 접근할 때는 맴버 연산자(.)를 이용하면 된다. struct student{ int number; char name[10]; double grade; }; // 끝에 ;이 붙는 것이 핵심이다. struct student s1 = { 24, ".. 2023. 1. 6.
문자와 문자열(쉽게 풀어쓴 C언어 EXPRESS) 용어정리 본문정리 문자와 문자열 문자열이란 일련의 문자들의모임이다. 문자열의 끝은 반드시 NULL 문자로 표시를 해주어야한다. 즉 문자 배열은 저장하고자하는 문자열의 크기보다 항상 하나 더 커야 한다. 초기화 하는 방식에는 2가지가 있다. char str[4] = { 'a', 'b', 'c', '\0' } ;//1번 방식 char str[4] = "abc"; //2번 방식 2번 방식은 자동으로 문자열의 끝에 NULL문자를 추가한다. char str[] = "abc"; //문자의 개수를 셀 필요가 없다 문자열 변경시 다음은 불가하다. char str[10] = "Hello"; str = "world"; // 불가 str은 주소이기 때문이다. 문자열 상수는 텍스트 세그먼트라고 불리우는 특수한 메모리 영역에 .. 2023. 1. 4.
포인터(쉽게 풀어쓴 C언어 EXPRESS) 용어정리 본문정리 포인터란? 포인터는 메모리의 주소를 가지고 있는 변수이다. &는 주소 연산자라 하며 변수명을 받아서 변수 주소를 반환한다. 간접 참조 연산자 * 간접 참조란 포인터를 통하여 값을 읽어오거나 값을 변경할 수 있기 때문이다. 포인터 사용시 주의할 점 초기화시 반드시 NULL을 이용하여야 한다. 포인터 연산 p가 어떤 자료형인가에 따라 증감연산자의 경우 2, 4 등으로 증가 할 수 있다.(주소 자료형에 영향을 받음) 가리키는 값을 증가시키고 싶을 때는 (*p)++처럼 괄호를 잘 이용해야 한다. 포인터와 함수 값에 의한 호출 : 복사본이 전달 참조에 의한 호출 : 원본이 전달 scanf()이 포인터를 이용하는 이유가 이것임, scanf()도 함수이기에 참조에 의한 호출을 이용해야 해당 주소에 .. 2023. 1. 3.
배열(쉽게 풀어쓴 C언어 EXPRESS) 용어정리 본문정리 배열이란? 배열이란 동일한 타입의 데이터가 여러 개 저장되어 있는 데이터 저장 장소이다. 메모리 연속적인 공간에 저장되고 서로 관련된 데이터를 차례로 접근하여서 처리할 수 있다. 반복문을 사용하여서 배열의 요소를 간편하게 처리할 수 있다. 배열의 초기화 초기값을 부여하는 것이 원칙이다. 개수를 구하는 방식은 sizeof(배열명) / sizeof(배열 첫번째 요소) 이다. 배열과 함수 배열은 원본이 매개 변수를 통하여 전달된다. 배열 요소는 복사본이 전달된다. 배열의 원본을 훼손시키고 싶지 않다면 매개변수에 const를 붙이면 된다. 정렬 선택 정렬은 가장 작은 수를 가장 왼쪽과 바꾸는 방식이다. 탐색 순차 탐색은 배열의 원소를 순서대로 하나씩 꺼내서 탐색키와 비교하여 원하는 값을 찾아가.. 2023. 1. 1.
함수(쉽게 풀어쓴 C언어 EXPRESS) 용어정리 본문정리 함수란? 함수는 3가지 특징을 가지고 있다. 서로 구별되는 이름, 특정한 작업을 수행, 입력을 받을 수 있고 결과를 반환 가능 함수의 종류에는 라이브러리 함수, 사용자 정의 함수가 있다. 라이브러리 함수란 컴파일러에서 지원되는 함수이다. 사용자 정의 함수란 개발자가 직접 만들어서 사용하는 함수이다. 함수 정의 구성 요소에는 반환형, 함수이름, 매개변수, 함수몸체로 구성되어 있다. 여기서 함수 몸체를 제외하고 나머지를 함수 헤더라 한다. 함수 호출이란 함수의 이름을 써주는 것이다. 매개 변수와 반환값 인수란 호출 프로그램에 의하여 함수에서 실제로 전달되는 값이고 매개 변수란 이 값을 전달받는 변수이다. 이때 인수와 매개변수 타입은 일치해야하고 개수가 일치해야한다. 반환되는 값이 없다면 r.. 2022. 12. 30.
반복문(쉽게 풀어쓴 C언어 EXPRESS) 용어정리 본문정리 반복의 개념 구성은 초기식, 조건식, 증감식으로 되어 있다. while 문 반복 루프에서 보초값 사용하기 센티널 값이란 데이터의 끝을 알리는데 사용되는 데이터 값이다. do - while 문 for 문 break와 continue 본문제 Q1. #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int a; printf("카운터의 초기값을 입력하시오: "); scanf("%d", &a); while (a) { printf("%d ", a); a--; } printf("\a"); return 0; } Q2. #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int a = 0, sum .. 2022. 12. 30.
조건문(쉽게 풀어쓴 C언어 EXPRESS) 용어정리 본문정리 제어문 제어문에는 조건문과 반복문이 있다. 제어 구조에는 순차 구조, 선택 구조, 반복 구조가 있다. if 문 복합문은 블록이라고도 하며 단일문이 여러 문장으로 구성되어 있는 것을 의미한다. if - else 문 다중 if 문 if는 많이 들어있는 한편 else가 한번만 들어있을 수 있다. 이때는 가까운 if에 매치된다. switch 문 default, break가 들어가야 함을 잊으면 안된다. 또한 제어식의 값은 반드시 정수값으로 계산되어야 한다. goto 문 쓰지말자 본문제 Q1. #define _CRT_SECURE_NO_WARNINGS #include int main(void) { char c; printf("문자를 입력하시오: "); scanf("%c", &c); switch (.. 2022. 12. 29.