학습 기록/C 9

(9) 메모리의 관리

/C 📌 메모리의 구조- 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간에는 코드, 데이터, 스택, 힙 영역이 있다.  코드 영역: 실행할 프로그램의 코드가 저장되는 영역이다. 텍스트 영역이라고도 한다.데이터 영역: 전역 변수, 정적(static) 변수를 저장한다. 프로그램 시작 시 할당되고, 종료 시 소멸된다.스택 영역: 지역변수와 매개변수를 저장한다. 함수의 호출과 함께 할당되고, 호출 완료시 소멸된다. 이 스택 영역에 저장되는 함수의 호출 정보를 스택 프레임이라고 부른다. 스택 영역에서는 푸시(push)로 데이터를 저장하고, 팝(pop)으로 데이터를 인출하는 후입선출(FILO) 방식으로 데이터가 관리된다. 메모리의 높은 주소에서 낮은 주소 순으로 할당된다.힙 영역: 사용자가 직접 관리하는 ..

학습 기록/C 11:12:16

(8) 포인터와 배열

/C 📌 포인터와 배열의 관계- 배열의 이름은 상수라는 점을 제외하면 포인터와 동일하다. 때문에 배열의 이름은 포인터 상수이다.#include int main(void){ int arr[3] = {10, 20, 30}; // 배열 선언 int* ptr_arr = arr; // 포인터에 배열의 이름을 대입함 printf("배열의 이름을 이용하여 배열 요소에 접근 : %d %d %d\n", arr[0], arr[1], arr[2]); printf(" 포인터를 이용하여 배열 요소에 접근 : %d %d %d\n", ptr_arr[0], ptr_arr[1], ptr_arr[2]); printf("배열의 이름을 이용한 배열의 크기 계산 : %d\n", sizeof(arr)); printf(" ..

학습 기록/C 2024.11.12

(7) 포인터

/C 📌 포인터의 개념- 주소값의 이해: 주소값 = 데이터가 저장된 메모리의 시작 주소 - 포인터란 메모리의 주소값을 저장하는 변수이다.int n = 100;int *ptr = &n; 위의 예시에서 n이라는 변수를 선언하고, *ptr을 통해 포인터를 선언하였다. - 포인터 연산자에는 주소연산자와 참조연산자가 있다. - 주소연산자(&)는 변수 이름 앞에 기호를 붙여서 사용한다. 해당 변수의 주소값을 반환하여 번지연산자라고도 불리며, 기호 &은 앰퍼샌드라고 읽는다. - 참조연산자(*)는 포인터 이름이나 주소 앞에 붙여서 사용한다. 포인터가 가리키는 주소에 저장된 값을 반환한다. - 포인터를 선언하는 방식은 아래와 같다.타입 * 포인터이름 = &변수이름;타입 * 포인터이름 = 주소값; - 포인터를 참조할 때..

학습 기록/C 2024.11.11

(6) 배열

/C 배열이란 같은 타입의 변수로 이루어진 유한한 집합을 의미한다. 배열을 구성하는 각각의 값은 요소(element), 배열에서의 위치는 인덱스(index)라고 부른다. 인덱스는 늘 0부터 시작하며, 0을 포함하는 양의 정수만을 갖는다. 📌 1차원 배열- 1차원 배열을 선언하는 방법은 아래와 같다.타입 배열이름[배열길이]; 참고로 위와 같이 선언 후 초기화하지 않는다면 배열에는 쓰레기값이 저장된다. 주의할 것.#include int main(void){ int i; int sum = 0; int grade[3]; // 길이가 3인 int형 배열 선언 /* 배열의 초기화 */ grade[0] = 85; // 국어 점수 grade[1] = 65; // 영어 점수 grade[2] = 90;..

학습 기록/C 2024.11.10

(5) 함수

/C 📌 C언어 함수- 함수란 하나의 특별한 목적이 있는 작업을 수행하기 위해 독립적으로 설계된 프로그램 코드의 집합이다. 표준함수, 사용자 정의 함수가 있다. 함수를 사용함으로써 반복적인 프로그래밍을 피하고 코드의 가독성을 높일 수 있다. 이 점은 유지/보수에도 유리하다. - 함수의 정의int sum (x, y){ //명령문} 반환 타입: 함수의 결과로 반환할 타입을 지정한다. 위의 예시에서는 int이다.함수 이름: 함수를 호출할 수 있는 이름이다. 위의 예시에서는 sum매개변수 목록: 함수 호출 시 전달되는 인수의 값을 저장할 변수들을 의미한다. 여러 인수를 전달할 수 있지만 반환값은 0개이거나 1개뿐이다. 위의 예시에서는 (x, y)함수 몸체: 함수에서 수행할 명령문을 의미한다. 중괄호 부분 #i..

학습 기록/C 2024.11.09

(4) 제어문

/C - 프로그램의 순차적인 흐름을 제어할 필요가 생길 때가 있다. 그럴 때는 제어문을 활용한다. 제어문에는 조건문과 반복문이 있으며, 명령문들은 중괄호{} 안에 표기한다. 중괄호 영역을 블록이라고 부른다.  📌 조건문- if문의 기본 형태는 아래와 같다.if(조건식){ 참일 때 실행할 명령문;} 명령문의 경우 들여 쓰기를 하는 것이 일반적인데, 이러한 들여 쓰기를 인덴트indent라고 부른다. 또한 명령문이 한 줄 뿐이라면 중괄호 생략이 가능하다. 조건의 개수에 따라 if/else문, if/else if/else문 또한 사용 가능하다. 또한 삼항연산자로 간결한 조건문 표현이 가능한데, 그 형식은 아래와 같다.조건식 ? 반환값1 : 반환값2; if/else if/else문의 예제 코드는 아래와 같다.#..

학습 기록/C 2024.11.08

(3) 연산자

/C 📌 산술연산자- 연산자에도 당연히 우선순위가 있다. 이걸 전부 외우기보단 그때그때 참고하는 것이 좋다. 코딩교육 티씨피스쿨4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등tcpschool.com위 링크에서 산술연산자의 우선순위 확인이 가능하다.  📌 증감연산자++x1 증가 -> 연산 진행x++연산 진행 -> 1 증가--x1 감소 -> 연산 진행x--연산 진행 -> 1 감소 예제를 살펴보자.int x = 10;int y = x-- + 5 + --x;printf("변수 x의 값은 %d이고 변수 y의 값은 %d입니다.\n", x, y);//변수 x의 값은 10이고 변수 y의 값은 23입니다. y값의 계산 순서를 살펴보자면,x-- + 5 => x(10) + 5 ..

학습 기록/C 2024.11.07

(2) 타입

/C 📌 변수- 변수란 데이터를 저장할 수 있는 메모리 공간을 의미하며, 정수형(char, int, long)과 실수형(float, double), 포인터 변수, 사용자 정의 구조체 변수가 있다. - 변수의 이름은 숫자, 언더스코어(_), 영문 대소문자로만 지을 수 있으며 숫자로 시작할 순 없다. 또한 C에서 사용되는 예약어를 변수로 사용할 수 없음에 유의해야 한다.  - 비트는 컴퓨터가 데이터를 처리하기 위해 사용하는 데이터의 최소 단위이며(0, 1을 저장하는 이진수 값), 바이트는 비트가 8개 모인 구조로 한 문자를 표현한다. - 변수는 메모리 주소를 기억하는 역할을 담당한다. 메모리 주소는 메모리 공간에서의 정확한 위치를 식별하게 한다. 따라서 변수를 참조한다는 것은, 메모리 주소에 저장된 데이터..

학습 기록/C 2024.11.06

C (1) 개요와 기초

/C 📌 C 프로그램의 특징- C의 기본 단위 = 함수모든 C 프로그램은 main 함수를 갖고 있어야 한다. 컴퓨터가 C 실행 시에 제일 먼저 main 함수를 호출한다. - 함수 내 각 명령문은 세미콜론(;)으로 끝나야 한다명령문은 기능 정의를 위해 사용되는 문장으로, 위에서 아래로 순차적으로 실행된다. - 대소문자 구분 - 자유 형식(free-format) 허용문법만 맞으면 어떻게 쓰더라도 상관없다. 그렇지만 코드의 가독성을 챙기는 것이 좋다. - 주석//한 줄 주석은 이렇게 작성한다/*여러 줄주석은이런 식으로작성한다*//*주석 안에//주석을 중첩하는 것도가능하다*/다만 여러 줄 주석 안에 여러 줄 주석을 중첩하는 것은 불가능하다는 것을 유념해야 한다. (인식 상 오류 발생)  📌 printf() ..

학습 기록/C 2024.11.05