본문 바로가기

C언어

(21)
13주차 컴프 15장 데이터가 파일에 들어가 있고, 결과물을 화면이 아닌 파일로 보냄. 파일에 데이터가 있는 이유는 많은 양의 데이터가 있기 때문. 데이터 입력후 컴파일을 하면 다시 입력을 해야 됨. 지뢰 찾기의 경우 일일히 입력을 해야하기 때문에 그걸 파일에 저장하고 그대로 갖고 옴. 파일 입출력과 관련하여 배우자. 스트림 : 바이트의 흐름 컴퓨터 - 키보드, 마우스, 스캐너, 마이크, 음성, 터치 등등의 입력장치 존재 키보드를 통해, 마우스를 통해, 마이크를 통해 입력이 되면 입력 장치에 따른 함수를 만들어야 함. 그럴 때마다 값들을 새로운 입력장치가 있으면 이를 받아들이기 위해 다른 코드가 등장해야함. 출력장치도 마찬가지임. 그러면 입력장치와 출력장치가 계속 바뀌게 되어서 의존성이 높아짐. 이 의존성을 낮추기 위..
컴프 12주차 struct student { // student는 구조체명, 태그, 메모리가 잡히지 않음 int id; int midterm; int final; }; 배열과다르게 형태가 다른 데이터도 하나로 묶을 수 있음. struct student aStudent; //일반 변수 struct student *sp = &aStudent; //포인터의 주소값을 가리킴. aStudent.id //일반 구조체가 접근할 때 *sp.id //포인터변수가 가리키는 값을 접근할 때 sp->id //위의 코드와 같음. 구조체 변수에 접근할 때 => 우선순위 : (*sp).id => sp자리로 가서 id //포인터 sp를 사용하여 구조체 멤버 각각에 값 설정 sp->id = 19950001 //(*sp).id = 19950001; ..
컴프 11주차 struct student { // student는 구조체 명, 태그, 메모리가 잡히지 않음 int id; //멤버 int midterm; //멤버 int final; //멤버 }; student에 대한 기본 틀 기본 자료형이 모여서 파생자료형이 되는데 구조체는 파생자료형임. - 구조체 변수 구조체변수 선언, 메모리가 잡힘 struct student aStudent; // aStudent는 구조체 변수 *struct student자체가 자료형이 됨. => 구조체는 자료형이고, 그 자료형으로부처 변수 선언이 가능한 것임. 구조체 변수 초기화 선언과 동시에 초기화 struct student aStudent = {19950001, 100, 50} -> 각각의 멤버에 초기값 부여. . (dot)연산자 : 구조체..
컴프 9주차 요약 Call-by-value (인수의 값을 매개변수로 전달) #include void f1(int x){ x = x + 10; } int main(void){ int a = 5; f1(a); //인수의 값을 전달 printf("%d\n", a); } Call-by-reference (인수의 주소값을 매개변수로 전달) #include void f1(int *p){ *p = *p + 10; } int main(void){ int a = 5; f1(&a); //인수의 주소값을 전달 printf("%d\n", a); } 예1) void swap(int *x, int *y) { int tmp; tmp = *x; *x = *y; *y = tmp; } int main(void) { int a = 100, b = 200;..
컴프 10주차 *표준 입력 장치 : 키보드 *표준 출력 장치 : 모니터 *표준 입출력 함수 : stdio.h *버퍼 : 키보드로부터 입력되는 데이터들을 모아서 한 번에 CPU로 전달을 해주는 임시 저장소 *에코 : 입력한 내용을 화면에 보여주는 것 ● 문자 단위 처리 3~4는 #include scanf("%c", &ch); printf("%c", ch); 하나의 문자를 읽고 저장. 버퍼O, 에코O, 공백을 기준으로 (문자) ch = getchar(); putchar(ch); 하나의 문자를 읽고 반환. 버퍼O, 에코O, 엔터를 기준으로 (줄) ch = _getch(); _putchar(ch); 하나의 문자를 읽고 반환. 버퍼X, 에코X, 공백을 기준으로 (문자) ch = fgetc(stdin); fputc(ch, std..
컴프 7주차 포인터는 c계열에만 있다.자바에는 없음. c언어는 하드웨어용 제어를 할 때 많이 쓴다.(가전제품 등등) 하드웨어를 제어하기 편리함. 반면 하드웨어를 직접 제어하므로 실수하면 문제가 생겨서 자바에서는 사라짐. (11장 교재) 포인터도 변수이다. 배열도 변수이다. 모두 변수이다. 그런데 변수와는 조금 다르다. 지금까지느 ㄴ변수가 값을 갖고 있었는데, 포인터 변수는 값이 아닌 주소를 가진다. 포인터는 메모리 주소를 가지고 있는 변수이다. 다른 변수는 값을 가진다. 메모리를 그리고 변수가 있으면 a는 10 0x16진수로 주소값이 정해짐. 포인터는 P라는 변수명(자주) 0x16진수가 들어가 있다. 주소값을 가졌다는의미. 값이 없고 주소가 있따. 값은 그 주소에 가야 있다. 그래서 주소를 쫓아 가보면 값이 있다. ..
6주차 복습 -배열 선언하기 방법1 : 선언 하기 int[] arr; //배열 이름 선언하기. arr = new int[10]; //배열의 크기 선언하기 int[] arr = new int[10] //선언과 동시에 크기 선언하기 방법2 : 초기화 시키기 int[] arr = { 1, 2, 3, 4, 5 }; //선언하지 않아도 길이가 나오기 때문에 새로 선언하지 않아도 됨. *단 c언어 처럼 이렇게 초기화할 수는 없다. => int[10] arr = { 0 }; +) 배열의 길이 구하는 메서드 : arr.length //값의 개수가 아닌 항상 배열의 전체 길이를 반환한다. - random 함수 선언하기 import java.util.Random int random = new Random(); int x; x = ra..
컴프 6주차 1차시 교재 12장 문자와 문자열 구분이 확실함. c언어는 문자는 글자 하나. 글자 하나는 ''으로 다룸 문자열은 한글자 이상. 문자열은 ""로 다룸 문자와 문자열은 다르다. 'A'와 "A"는 다르다. 문자는 있는 만큼 메모리를 차지하고 문자열은 메모리상에 \0가 추가로 차지됨. 문자는 char 문자열은 string 문자는 모두 아스키코드 값을 가진다. A는 65 a는 97 숫자 0이 있고 문자 0이 있다. 문자 0의 아스키코드값은 48이다.(0도 외우기) 문자열을 나타내는 데이터타입이 따로 없다. 그래서 char을 이용하여 배열로 선언한다. str이라는 변수는 문자열을 가질 수 있는 것. str[10]은 최대 9개의 문자까지 가진다(\0이 들어가므로) 문자열은 끝에 \0이 있고 문자형 배열은 \0이 없다. 문..