Language Study 29

[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

[C/C++] 07 - 03 함수와 Modular Programming

✓ Structured Programming 모든 프로그램은 본질적으로 순차(Sequence), 선택(Selection), 반복(Repetition) 이라는 3가지의 제어 구조(Control Structure)의 조합으로 구성된다. 코드에서 이러한 제어 구조가 명확히 드러날 때 코드 작성과 이해가 쉬워진다. 실제 C 언어에서는 선택을 위한 if-else, switch, 반복을 위한 for, while, do-while등의 제어 구조문을 제공한다. 그러나 기계어에서는 제어 흐름 변경을 위한 명령어로 단순 비교(simple test)와 Jump(=GoTo)를 이용한 구문 이동만을 제공한다. 조기 프로그래밍 언어도 단순 비교와 GOTO만을 제공하여 3가지 제어 구조가 잘 드러나지 않는 복잡한 코드가 양산되었다..

Language Study/C 2022.11.02

[C/C++] 07 - 02 STANDARD LIBRARY 함수의사용

✓ C Standard Library 표준 입출력을 위해 사용한 printf()와 scanf()역시 함수다. 이 함수의 Prototype/Declaration은 stdio.h에 있다. C Standard Libaray란? C언어에서 기본적으로 사용할 수 있는 서비스 함수이다. Reference를 통해 어떤 함수가 있는지, 어떻게 이용하는지 알 수 있다. #include #include #include int main(void){ int i,ranval; double uranval; srand(time(0)); for(i=0; i

Language Study/C 2022.11.02

[C/C++] 07 - 01 함수와변수,함수인자심화학습

함수와 변수, 함수 인자 심화학습 ✓ Comma Seperated Values 다양한 자료형과 연산 파트에서 CSV 형식의 문자열에서 값을 추출하여 연산을 수행하는 문제를 다루었는데 코드는 아래와 같았다. 근데 모두 음이 아닌 정수로 가정했다. CSV 문자열에서 값을 하나씩 추출하는 기능을 개별 함수로 분리해보자. #include int main(void) { int i; // index int num=0, sum=0; // number char str[]="123,456,789"; for(i=0;str[i];i++) { if (str[i] == ',') { // new number sum += num; num = 0; } else { // a digit num = num*10 + (str[i]-'0')..

Language Study/C 2022.10.25

[C/C++] 04 - 함수 기초 - 함수 선언과 변수 유효 범위

Index 함수 선언과 변수 유효 범위 Function Definition vs. Function Prototype Interface & Implementation Variable Scope Local Variable vs Global Variable 1.Function Definition vs. Function Prototype ① Function Prototype? Function Definition에서 Body 부분을 제거하고 Header 부분만 남긴 형태 ; (semicolon)을 덧붙임에 유의 Function Prototype, Funcion Declaration, Function Interface 등의 이름으로 불림 함수 호출에 필요한 정보는 모두 알려주지만 함수가 어떻게 구현/실현되는지를 보..

Language Study/C 2022.10.03