본문 바로가기

전체 글

(71)
[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차원 배열을 가리키기 위한 배열 포인터 #include #define ROW 3 //ROW : 줄 #define COL 100 //COL : 칸 //void print_array_2d() int main() { int i = 0; int j = 0; //문자열 여러개로 2차원 배열을 초기화 char arr[ROW][COL] = { "Weclome", "to", "Neverland"}; //위의 2차원 배열은 아래와 같은 효과 char text[COL] = "Welcome"; char* p_arr = text; //문제없음 text의 원소가 char이므로 둘다 char타입이 맞음. char(* p_arr2)[COL] =..
[C언어]DAY13_문자열 응용, 다차원 배열 문자열 응용 //문제 //문자열을 선언하고 "Hello World"로 초기화한 뒤, //문자열에 있는 영문을 모두 소문자로 변환시키는 프로그램을 작성하세요. // "Hello World" => "hello world" //대문자와 소문자는 32차이가 난다. #include #define MAX 100 void lower(char* arr, int count){ int i =0; printf("%d\n", sizeof(arr)); for(i=0; i ='A' && arr[i]
[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 ..