Language Study/C 22

[C/C++] 11 - Command Line Argument

Command Line이란? 컴퓨터의 텍스트 인터페이스 프로그램은 커멘드를 통해서 실행을 위해 컴퓨터 operation system으로 이동한다. Commend Line arguments - parameters that are supplied to the program when it is invoked argc & argv[] int argc // argument count commend line arguments의 char *argc[] // argument vector The array of the pointers to all command line arguments All command line arguments are inputted as character strings argv[0] points..

Language Study/C 2022.12.14

[C/C++] 10 - 04 파일 입출력 기초

Index C 언어의 두 가지 파일 유형 Text File vs Binary File 파일 사용의 개골적 과정과 FILE 구조체 1. C언어의 두가지 파일 유형 Text Mode File vs. Binary Mode File 2. Text File vs Binary File C 언어에서는 파일을 읽거나 쓰기 위해 Open 할 때 대상 파일이 Text File 인지 Binary File 인지 구분하여야 한다. Text File 사람들이 읽을 수 있는 문자로 모든 정보를 표현하고 저장하는 파일 서로 다른 값을 구분하는 구분자가 필요하다 표준 입출력에 문자열을 출력하는 puts(), printf() 등의 함수,입력하는 gets(), scanf()등의 함수에 대응하는 fputs(), fprintf(), fget..

Language Study/C 2022.12.14

[C/C++] 10 - 03 Lifetime 분류

Index 변수(또는 메모리 블록) Lifetmie 분류 Memory Layout of a C Process 함수 호출과 Stack Automatic Variable & Stack 1. 변수(또는 메모리 블록) Lifetime 분류 ① Static Its lifetime is the entire duration of the program's execution Global and Static Local Variables A static variable is stored in the data segment of the "object file" of a program ② Automatic An automatic variable has a lifetime that begins when program execut..

Language Study/C 2022.12.14

[C/C++] 10 - 02 문자열 버퍼 동적 할당

① whlie문을 활용해볼까요. 1) 사용자가 Ctr - z를 눌러 EOF를 입력할 때까지 최대 MAX_LINES 만큼의 문자열을 입력받음 2) EOF인 경우 gets()의 return은 NULL이다. ② gets_malloc()을 사용해볼까요. 불필요한 메모리 사용을 줄이기 위해 문자열 입력을 위한 버퍼를 동적으로 할당. ※ gets_malloc() gets() 함수의 문자열을 입력 받을 버퍼를 malloc()으로 동적 할당 입력이 EOF이면 동적으로 할당 받ㅇ느 버퍼를 해제하고 NULL 을 Return 문자열 입력 버퍼 동적으로 할당 받는 문자열 입력 버퍼들을 관리하기 위한 문자열 포인터 배열 str_ptrs[]선언하고 NULL값으로 초기화 실제 입력 LINE 수에 해당하는 문자열 버퍼만 할당 동적으..

Language Study/C 2022.12.14

[C/C++] 10 - 01 메모리 동적 할당

목차 정적인 메모리 공간 할당의 한계 동적인 메모리 할당 및 해제 함수 assert 매크로 메모리 공간의 할당과 복사 1. 정적인 메모리 공간 할당의 한계 만약 이 코드에서 1의 값을 100이라 했을 때 만약에 입력한 값이 150이면 run-time error 가 발생하고, 10을 입력했다면 메모리를 불필요하게 낭비한게 됨 → 필요한 크기를 미리 알 수 없다!! 면... 2. 동적인 메모리 할당 및 해제 함수 Dynamic Memory Management Functions Defined in header 메모리 동적 할당 함수 void *malloc(size t, size); Allocates size bytes of uninitalized storage Param: size - number of byt..

Language Study/C 2022.12.06

[C/C++] 09 - 03 구조체 배열과 포인터

목차 배열과 포인터 구조체 배열과 포인터 1. 배열과 포인터 포인터 변수에 대한 산술 연산 참조하는 자료형의 크기에 비례하여 값이 더해지거나 빼짐 포인터 제 2 법칙 pn[n] = *(p+n) 2. 구조체 배열과 포인터 포인터를 활용한 배열의 순회 C에서는 첨자가 아닌 포인터를 통한 배열 순회가 널리 쓰임 배열의 이름은 배열의 시작 주소를 나타내는 포인터/주소 상수 포인터 제 2법칙: p[n] = *(p + n); &p[n] = &(*(p + n)) = p + n 요약

Language Study/C 2022.12.03

[C/C++] 09 - 02 구조체 변수와 함수, 포인터

목차 구조체 변수와 함수 구조체 변수와 포인터 구조체 매개 변수 vs 구조체 포인터 매개 변수 구조체 변수와 함수의 인자 구조체가 쓰이는 C 표준 라이브러리 함수 1. 구조체 변수와 함수 ✓ stud_swap() 함수 구조체 변수 값 swap을 위해 만든 함수인데 swap이 되지 않는다. 그 이유는 무엇일까? Call by Value scalar 형 자료형과 같이 구조체 변수 역시 매개변수로 값이 복사되어 감 매개변수는 호출 시 사용한 변수와 별개이며 변화가 반영되지 않는다. 2. 구조체 변수와 포인터 구조체 자료형에 대한 포인터가 가능하다. 구조체 포인터에서 구조체 멤버를 접근하려면 ->: 구조체 포인터의 멤버 변수 접근 연산자 3. 구조체 매개 변수 vs 구조체 포인터 매개 변수 배열의 경우 대입 연..

Language Study/C 2022.11.24

[C/C++] 09 - 01 구조체 기초

목차 구조체 구조체 자료형 정의 및 변수 선언 방법 typedef: 자료형 별명 만들기 typeof와 구조체 자료형 구조체 변수의 초기화 구조체의 메모리 구조 배열에 대한 Assignment 연산 1. 구조체 : 여러 자료형의 연속된 변수들로 구성된 집합체 ✓ 구조체는 왜 쓰는가? → 여러 자료를 개별적으로 다루기 보다 한 곳에 모아서 관리하면 편하니깐! ✓ C의 구조체 구조 하나 이상의 멤버(Member)/필드(Field) 변수 들로 구성 각 멤버/필드 변수들은 서로 다른 자료형을 가질 수 있다 ※ 구조체는 일종의 자료형(Type)이다. 구조체 선언은 새로운 자료형을 정의하는 것으로 변호 선언과는 다르다 새로운 자료형의 이름은 "struct name" 이다 2. 구조체 자료형 정의 및 변수 선언 방법 ..

Language Study/C 2022.11.23

[C/C++] 08 - 02 배열, 문자열과 포인터

목차 포인터 변수에 대한 산술 (+,-) 연산 배열의 이름과 주소 배열의 이름과 주소 배열 첨자 연산과 포인터 문자열과 포인터 배열 매개 변수와 포인터 배열 매개 변수 함수 호출에서의 배열 변경 문자열 입출력 함수 :gets()와 puts() 1. 포인터 변수에 대한 산술 (+,-) 연산 주소 값은 정수 값과 유사하게 보인다 포인터 변수에 대해 정수와 유사하게 +, -, ++, -- 연산을 할 수 있다. 그러나 정수와의 그 연산결과가 다르다. 포인터 변수가 참조하는 자료형의 크기에 따라 달라진다. 2. 배열의 이름과 주소 ① 배열의 이름과 주소 배열의 이름은 배열의 시작 주소를 나타내는 포인터/주소 상수이다. 그렇기 때문에 '값'을 변화시키려는 연산은 모두 불가능. 배열 '이름'은 포인터이므로 + 연산이..

Language Study/C 2022.11.21

[C/C++] 08 - 01 POINTER 기초

목차 1. 메모리 구조와 변수 2. 포인터의 개념 3. *(Pointer Dereference) 연산자 4. 포인터 변수 & 주소 값 5. 포인터 활용 ①메모리 구조와 변수 Memory 메모리 셀이 연속해 나열되어 있는 구조 각 메모리 셀은 식별을 위한 주소를 가지며 셀 내에 이진 값을 저장할 수 있다 Variable 값을 저장하는 메모리 공간 Identifier, Type, Value, Memory Size, Memory Adress, Scope, Lifetime 등을 속성으로 가진다. ② 포인터의 개념 포인터(Pointer)란 지시자, 가리키는 자를 의미한다. 즉, 포인터의 Value값은 대상의 '주소'이다. 그렇다면 대상의 주소를 어떻게 가져오는가? → 연산자 &를 활용하는 것이다. 포인터 연산자에..

Language Study/C 2022.11.09