본문 바로가기

programming language/C8

[C언어] 14강 구조체 14강 구조체 구조체란 간단한 변수나 배열로는 나타내기 어려운 데이터들을 나타내는 방법임 코드로 알아보면, struct book //구조체 선언 -> 문자 배열 2개와 float형 변수 1개로 이뤄진 구조체 { char title[MAXTITL]; char author[MAXAUTL]; float value; }; //중괄호 사이의 변수들은 모두 멤버 변수 위와 같이 여러 변수와 배열로 하나의 구조체를 선언할 수 있다. 여기서 아래와 같이 구조체의 변수를 직접 설정할 수도 있다 struct book mybook; 또한 구조체는 포인터와 함께 쓰일 수 있다 구조체의 초기화 방법은 다음과 같다 struct house apt = { .value = 251.00, .com="hyundai", .name="fru.. 2023. 2. 26.
[C언어] 13강 파일 입출력 이진 모드는 0, 1로 구성된 파일 텍스트 모드는 문자로 구성된 파일 명령행 인자 int main(int argc, char *argv[]){...} 에서 argc, argv가 여기에 해당함 //argc는 두번째 인자인 argv의 크기를 의미 //argv[0]은 실행하는 프로그램의 패스를 의미하고 //argv[1], argv[2]... 순으로 첫째 인자, 둘째 인자 등을 나타낸다 int getc(FILE* stream); //getchar와 다른 점은 fp로 식별된 파일에서 문자를 추출 int putc(int character, FILE* stream); int putc(int character, FILE* stream); //putchar와 유사한 기능 가짐 //그러나 파일을 읽다가 끝에 도달하면 EO.. 2023. 2. 22.
[C언어]12강 기억 클래스, 연결, 메모리 관리 저장 클래스는 객체 지향 프로그래밍에서 객체를 생성할 때 그 객체가 어떤 메모리 영역에서 살아남을지를 결정하는 방식 스코프는 하나의 변환 단위(파일) 내에서 변수나 함수의 유효 범위를 나타내는 개념 연결은 다른 스코프에 속하는 변수들을 서로 연결하는 것을 의미한다 ㄱ. 무연결 : 지역 변수가 가지는 특징이다 함수 영역인 block scope 내에 선언되어 있음 ㄴ. 내부 연결 : 하나의 파일에서만 사용 가능함 ㄷ. 외부 연결 : 여러 파일에서 사용 가능함 자동 변수 블록 내에서 선언된 변수를 의미하며 블록의 실행이 끝나면 메모리에서 사라짐 레지스터 변수 CPU 레지스터에 저장되어 신속하게 접근 가능함 레지스터에 저장할 수 있는 조건이 매우 제한적이기 때문에 자동 변수로 보내는 경우 있음 정적 변수 프로그.. 2023. 2. 17.
[C언어] 11강 문자열과 문자 I/O 함수 문자열이란 보통 char var[size] = “abcde fgh”; 이런 식으로 선언이 된다 배열은 값을 변경할 수 없는 포인터, 즉 포인터 상수이다. 문자 입력에서는 먼저 배열을 선언한 즉시 문자열로 초기화해야 한다 문자 입력 함수는 다음과 같다 char* fgets(char* str, int num, FILE* stream); //1번 인자는 문자열을 저장할 char 배열을 가리키는 포인터 //2번 인자는 읽어들일 최대 문자 수 //3번 인자는 문자열을 읽어들일 스트림의 file 객체를 가리키는 포인터 //리턴값은 str이다 //결과를 "\n"이 나올 때까지 string에 저장하고, 스트링 끝에 "\0"을 추가한다 //읽은 문자 수가 n - 1일때까지 문자를 읽는다 char* gets_s(char*.. 2023. 2. 17.
[C언어]10강 포인터와 배열 10강 포인터와 배열 배열이란 같은 타입의 변수들로 이루어진 유한 집합이며 인덱스는 0부터 시작한다 포인터란 메모리의 주소값을 저장하는 변수이다 보통 포인터의 크기는 32비트 컴파일러에서는 4비트, 64비트 컴파일러에서는 8비트가 나온다. 예시>메모리에서 일정 범위를 이동하며 위의 short 자료형은 2바이트로 구성되어 있으며 2바이트마다 pointer 역시 이동하면서 추가된다 주소값 => 해당 데이터가 저장된 메모리의 주소 의미 32비트: 16진수 8자리 0x00000000 ~ 0xFFFFFFFF 예) 0x008AF7FC 64비트: 16진수 16자리 0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF 예) 0x00000000008AF7FC 16진수는 0부터 9까지, 그리고 A부터 F.. 2023. 2. 10.
[C언어] 9강 함수 함수 사용 이유: 반복작업에 들어가는 메모리와 시간을 절약하게 해줌 함수의 기본 구조 void func(void) { statement; } 여기서 앞부분의 void는 리턴할 값이 없음을, 괄호 안의 void는 인자가 없음을 의미함 재귀 자기 자신을 불러오는 것 주로 반복적인 실행에 사용이 됨 재귀의 동일한 레벨에는 동일한 주소가 할당됨 재귀의 장점 구조가 단순하다 재귀의 단점 컴퓨터 메모리를 급격하게 소모한다 헤더파일을 새로 만들어서 여러 소스 파일에서 사용하는 함수를 보관하는 것도 좋은 방법이다 포인터는 주소를 저장하는 변수이다 이런 식으로 변수의 속한 위치, 변수 그리고 값, 메모리 위치를 나타낸다 2023. 2. 10.
[C언어] 7, 8장: if-switch문, 문자 입출력 7장 분기와 점프 if문: if (expression) statement=> expression이 true이면 statement가 실행됨 if문 구조if (experiment1){statement1}else if (experiment2){statement2}else{statement3} switch문 구조 switch(choice){case ‘a‘: statement1;break; case ‘b’: statement2;break; //…… default: statement0; //choice가 어디에도 포함되지 않을 때} default와 case는 switch문에서만 사용된다 C는 세 가지 논리 연산자를 가짐 조건 연산자: ?식1 ? 식2 : 식3식1이 참(1)이면 조건문은 식2와 같은 값을 가지고 거짓.. 2023. 2. 4.
[C언어] 1~6강 내용 정리 1장:  동계 방학 C언어 스터디 내용 티스토리에 공유 예정참고도서 C Prime Plus 6th editionhttps://www.amazon.com/Primer-Plus-6th-Developers-Library/dp/0321928423 Amazon.comEnter the characters you see below Sorry, we just need to make sure you're not a robot. For best results, please make sure your browser is accepting cookies.www.amazon.com컴구조 운영체제를 공부하기 전에 C언어를 꼭 공부해 놓아야 할 필요성이 생겨서 스터디 내용을 정리할까 한다 본인 과는 C언어를 배우지 않아서 별도로 .. 2023. 1. 13.