본문 바로가기

C언어/예습

(18)
[C언어 예습]DAY18_구조체1 구조체(타입) 변수 : 반복되는 값들을 편하게 관리하기 위해 함수 : 반복되는 문장들을 편하게 관리하기 위해서 구조체 : 반복되는 변수들을 편하게 관리하기 위해서 (함수는 C++, JAVA에서 관리 가능 : 클래스) - 구조체를 사용하기 위해서는 공통요소를 찾아야함! 구조체 선언 struct 구조체이름{ 자료형 멤버변수명; ... }; 구조체 사용 (1) struct 구조체이름 변수명; 변수명.멤버변수명 = 값; ( . : 하위연산자 ) ( A.b : A안에 b ) (2) struct 구조체이름 변수명 = { .멤버변수명 = 값,...} (3) struct 구조체이름 변수명 = {값, ...} #include #include //Animal 구조체 만들기 struct Animal { //구조체 내에서는 ..
[C언어 예습]DAY17_동적 배열 실생활 예제(막대그래프), 알고리즘 예제(Baseball Game) 그래프의 원리 ★로 알아보기. #include #include void main() { //학생 수 만큼 점수를 입력받아 출력하기 //1. 학생 수 입력받기 //2. 학생 수 만큼 점수 입력받기 int cnt = 0; int* arScore = 0; printf("학생 수를 입력하세요.\n"); scanf_s("%d", &cnt); arScore = (int*)malloc(sizeof(int)*cnt); for (int i = 0; i < cnt; i++) { printf("%d번 학생 점수 입력 :", i + 1); scanf_s("%d", arScore + i); } for (int i = 0; i < cnt; i++) { printf("%d번 학생 점수 : %d점\n", i + 1, arScore[..
[C언어 예습]DAY16_동적 할당, 동적 배열 동적할당(dynamic allocation) malloc() 자료형* 포인터명 = (자료형*)malloc(sizeof(자료형)*크기); 자료형* 포인터명 = (자료형*)malloc(크기); 동적할당 초기화(clear allocation) calloc() 자료형* 포인터명 = (자료형*)calloc(크기, sizeof(자료형)); 동적할당 크기변경(resize allocation) realloc() 자료형* 포인터명1 = (자료형*)malloc(sizeof(자료형)*크기); 자료형* 포인터명2 = (자료형*)realloc(포인터명1, sizeof(자료형)*변경할크기); 동적할당 메모리 해제(중요) free(포인터명); * 메모리를 해제하지 않으면 사라지지 않고 남아있기 때문에 overflow가 생기면 심각..
[C언어 예습]DAY15_인터배열과 배열포인터, 지역변수, 전역변수, static변수 포인터 배열 : 포인터가 나열 되어 있는 것 2개 이상의 주소값을 저장할 수 있도록 함(목적) 값에 접근하기 위해서는 두번 참조해야 한다. #include #define SIZE 3 //void 함수를 선언해서 40, 50, 60으로 값 바꾸기 //배열 받아오기 void changeValue(int*); //void changeValue(int*[]); void main() { int num1 = 10, num2 = 20, num3 = 30; int* PArNum[3] = { &num1, &num2, &num3 }; for (int i = 0; i < SIZE; i++) { printf("%d ", **(PArNum+i)); } printf("\n"); changeValue(PArNum); //PArNu..
[C언어 예습]DAY14_포인터(2) 정적 배열, 동적 배열, 이중 포인터 포인터(2) - 함수의 매개변수의 종류에 따라 호출패턴(방식)이 다르다. call by value int f(int x){ return 2*(*x)+1; } f(3); call by address void f(int* x){ *x = 2*(*x)+1; } int data = 3; int* PData = &data; f(PData); - 포인터의 사용이유 : 다른 지역에 있는 변수의 주소에 접근하여 값을 변경 혹은 수정할 수 있다. #include void f(int*); void main() { int num = 0; f(&num); printf("%d\n", num); } void f(int* data) { *data = 10; } //선택정렬 함수 만들기 #include void sort(int*, ..
[C언어 예습]DAY13_포인터(1) 포인터(1) : 가리키는 것, 주소를 가리키는 것. - 포인터 변수 - 포인터 상수 : 배열 변수(저장공간): 값 포인터(저장공간): 주소값 - &data / &(주소연산자)변수(저장공간) - int *PData / int(자료형)*(포인터연산자) - *PData / *(참조연산자) : 가서 읽어라. 100페이지 피세요~ : 포인터 100페이지 읽으세요~ : 참조 포인터의 크기는 컴파일러마다 다름. 32bit 에서는 자료형 상관없이 무조건 4byte. 64bit 에서는 자료형 상관없이 무조건 8byte. 선택정렬(오름차순) 9 1 8 5 6 1회전 1 9 8 5 6 2회전 1 5 6 8 9 3회전 1 5 6 8 9 4회전 1 5 6 8 9 #include void sort(int *arData, int ..
[C언어 예습]DAY12_함수의 응용(계산기) 함수의 응용 계산기 (함수 사용, 헤더파일 사용) 출력예) 계산기 10*4 40 string.h strcmp(): 문자열 비교 strcmp(값, 값) 두 값이 같으면 0 리턴 char oper[3] = {' ', }; if( !strcmp(oper, "+") ){ 같을 때 실행할 문장 } #include #include #include"calculator.h" void calc(int, char[3], int); void main() { int num1 = 0; int num2 = 0; char oper[3] = { ' ', }; printf("계산기\n"); scanf_s("%d%c%d", &num1, oper, sizeof(oper), &num2); //printf("%d%s%d\n", num1, o..
[C언어 예습]DAY11_함수의 선언과 사용 함수 function - 함수를 사용하는 이유: 반복되는 문장들을 쉽게 관리하기 위해서. 특정성을 주면 x, 재사용의 목적이 있기 때문에. f (x) = 2x+1 함수명 매개변수 리턴값 - 함수의 선언 리턴타입 함수명(자료형 매개변수, ...) { 실행할 문장; return 리턴값; } - 함수의 사용 함수명(값1, 값2, ...); * 함수 주의사항! 함수는 선언시 반드시 다른 함수 외부에서 선언해야 한다. 하지만 사용은 가능하다. - 함수 선언시 순서 * 틀을잡는다. * 1. 함수명을 선택한다.(동사, 리턴타입은 처음에 void로 준다.) 2. 매개변수를 선택한다. 3. 실행할 문장과 리턴값을 생각한다. #include //f(x)= 2*x+1 (단, x는 정수) int f(int); void mai..