목록전체 글 (97)
OneDev

1. typedef 선언 이란? typedef 선언이란 typedef를 스토리지 클래스로 사용하는 선언으로, 선언자는 새 형식이 된다 typedef 선언을 사용하여 C에서 이미 정의된 형식이나 사용자가 선언한 형식에 대한 보다 짧거나 의미 있는 이름을 생성할 수 있다 (특정 형식에 대한 별칭 부여) 불필요한 타이핑을 줄이고 소스코드 작성의 효율을 올려준다 배열, 구조체, 열거형, 함수 등에도 사용 가능하다 2. typedef 선언 방법 → typedef 선언 방법은 다음과 같다 > typedef struct Human human → 구조체 [struct Human] 을 [human] 으로 대신 부르겠다는뜻 /* 다양한 typedef 사용 예시 */ #include int add(int a, int b) ..

※ 목차 ▣ 매크로함수 (0) 매크로 함수란? (1) 매크로 함수 정의 방법 (2) 매크로 함수와 실제 함수와의 차이점 (3) # 과 ## ▣ 인라인 함수 (1) 인라인 함수 정의 방법 (2) 인라인함수 vs 매크로함수 ▣ 매크로함수 0. 매크로 함수란? → C 에서 매크로 함수란 #define 전처리 지시자를 이용해 함수처럼 동작하는 매크로를 말한다 → 이러한 매크로를 "함수 같은 매크로(function-like-macro)" 또는 "매크로 함수" 라 한다 1. 매크로 함수 정의 방법 (예시) #define square(x) x*x 2. 매크로 함수와 진짜 함수의 차이점 → 매크로 함수의 동작 방식은 #define 문을 통한 치환과 동일하다 → 즉 매크로 함수는 컴파일 되기 전에 치환을 수행한다 #de..

◎ 오류 Visual Studio Code 에서 파이썬 파일을 실행하려고 하자 오류가 났다 launch.json 파일을 열어서 봐도 문제점을 찾지 못했다 찾아보니 최신 버전 VsCode Python Extension 문제로 Python 3.6 버전을 사용할 주로 발생한단다 ◎ 해결 Extension -> Reload required 버튼을 클릭하니 다시 정상적으로 작동하였다

◎ memcpy 포함 헤더 : ( C++에서는 ) 메모리의 일부분을 복사한다 기본형 : void* memcpy(void* destination, const void* source, size_t num); soure 가 가리키는 곳 부터 num 바이트 만큼을 destination이 가리키는 곳에 복사한다 리턴값 : destination 단순히 이진데이터를 복사하는 함수기 때문에 destination 과 source 의 타입은 함수와 무관하다 source 의 널 종료 문자를 검사하지 않고, 언제나 정확히 num 바이트 만큼을 복사한다 오버플로우를 방지하기 위해 destination 과 source 가 가리키는 배열의 크기는 반드시 num 바이트 이상이어야 하고, 서로 겹치면 안된다 ( 만일 두 메모리 블록이..
◎ 동적 할당(Dynamic Memory Allocation) "동적 할당" 이란 → 프로그램이 실행단계에서(프로그램 실행중에) 사용할 메모리 공간을 직접 할당하는 것 컴파일 단계에서 메모리를 할당하는 정적(static) 할당과 비교된다 상황에 따라 원하는 만큼 메모리를 할당할 수 있고, 이미 할당된 메모리라 해도 크기를 조절할 수 있다 malloc 함수를 이용해 메모리를 할당하고, free 함수를 이용해 할당을 해제해줘야 한다 ◎ malloc, free 함수 에 정의되어 있다 ( 를 include 해줘야 한다) malloc 함수의 리턴형 : (void *) 형 malloc 함수를 이용해 메모리를 할당받은 메모리는 이후에 free 함수를 이용해 해제해주어야 한다 ( 해제하지 않을 시 메모리 누수 memo..
▣ 전처리기 (preprocessor) → 소스코드의 특정 부분을 컴파일 이전에 처리하도록 컴파일러에게 알려주는 텍스트 처리기. (전처리기문 끝에는 세미콜론 (;) 을 붙이지 않는다) ◎ #define 상수, 함수 등을 매크로로 정의할 수 있다 [ #define 매크로이름 값 ] 의 형태로 사용한다 소스코드에서 "매크로이름" 에 해당하는 부분을 "값"으로 대체하게 된다 #define VAR 10 ◎ #undef #define 을 통해 정의한 매크로를 해제 ◎ #include 지시문이 표시되는 지점에 지정된 파일의 내용을 포함하도록 지시하는 기능 로 감싸는 헤더 파일 → 컴파일러에서 기본으로 지원하는 헤더파일인 경우 ( , 등) " " 로 감싸는 헤더파일 → 사용자가 직접 제작한 헤더파일인 경우 #..

▣ 목차 1. 구조체 정의 2. 멤버 접근하기 3. 구조체 포인터 & -> 연산자 4. 배열을 이용해 구조체 멤버 초기화 하기 ◎ 1. 구조체 정의 구조체를 정의하는 방법은 아래와 같다 기본형 모든 멤버의 타입을 명시해주어야 한다 마지막에 반드시 세미콜론(;) 을 붙인다 구조체 내에서 변수를 초기화 할 수 없다 /* 구조체 예시 */ struct Person { int age; int height; int weight; char name[20]; }; /* 구조체 내에서는 변수를 초기화 할 수 없다 */ struct Person { int age = 10; 연산자 (1) 구조체 포인터 구조체를 가리키는 포인터 또한 생각해 볼 수 있다 struct test { int a, b; }; struct test ..
문자열이 주어졌을 때, 그 문자열이 팰린드롬인지 아닌지 판별하는 함수를 정의해 풀이하였다. 시작 index는 1씩 증가, 끝 index는 1씩 감소시키며 문자들을 비교한다. 반복문이 종료될 때 까지 비교한 모든 문자들의 쌍이 같으면 팰린드롬이므로 1을 리턴하고, 하나라도 다른 쌍이 나오면 바로 반복문을 종료하고 0을 리턴한다. 이때 끝 index 를 ( 문자열의 길이 - 1 ) 로 잡아야함에 유의한다. #define _CRT_SECURE_NO_WARNINGS #include #include int is_palindrome(char*); int main() { char str[101]; scanf("%s", str); printf("%d", is_palindrome(str)); return 0; } int..
[ 풀이 ] 주어진 문자열의 처음과 끝을 출력해야한다. 문자열 끝의 경우 헤더에서 제공하는 strlen() 함수를 이용해 문자열의 길이를 구해 풀이하였다. 이 때 인덱스를 (길이 -1) 로 해줘야 함에 유의한다 ( 문자열의 마지막은 널문자이기 때문) #include #include int main() { int t; char str[101]; scanf("%d", &t); while (t--) { scanf("%s", str); printf("%c%c \n", str[0], str[strlen(str) - 1]); } return 0; }
▣ 목차 1. 문자열(String) 2. 널(Null) 3. 버퍼와 입력스트림(stdin) 4. 문자열 입력받기 5. 버퍼 비우기 6. 문자열 리터럴(literal) 7. 문자열 복사, 비교, 합치기 ( string.h 사용 X ) 8. 문자열 길이 구하기 ( strlen() ) ◎ 1. 문자열(String) "문자열(string)" 이란 → 문자(char)들의 배열 문자열을 정의하는 방법은 크게 2 가지 이다. (1) 배열과 널 문자( '\0 ') 이용 각 문자를 작은 따옴표로 감싸 배열에 저장 배열의 마지막에 널('\0') 을 넣어주어야 한다. 배열의 크기를 지정할 때 널 문자도 포함시켜 생각해야 한다 ( "hi" 라는 문자열을 저장하고자 한다면 크기를 2가 아닌 3으로 해야한다) (2) 큰따옴표("..