일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- R
- Selection Sorting
- s
- stream
- Graph
- buffer
- 이것이 자바다
- C programming
- Serialization
- 윤성우 열혈자료구조
- 알기쉬운 알고리즘
- Algorithm
- 메모리구조
- 이스케이프 문자
- coding test
- 윤성우의 열혈 자료구조
- 혼자 공부하는 C언어
- Stack
- datastructure
- JSON
- list 컬렉션
- C 언어 코딩 도장
- insertion sort
- Today
- Total
목록Programming Language/C programming (13)
Engineering Note
#include #include #include #include struct Person { char name[20]; char phone[20];};void Sort(Person list[], int size) { for (int idx = 1; idx //#include //#include //#include ////void menu() {// printf("\n\n=================\n");// printf("1.전화번호 등록\n");// printf("2.전화번호 출력\n");// printf("3.전화번호 검색\n");// printf("4.전화번호 삭제\n");// printf("5.전화번호 정렬\n");// printf("0...

2차원 동적배열 할당map = (int**)malloc(sizeof(int*)*H); 를 통해 세로(높이) 공간을 할당 해준다. map이라는 이중Pointer 변수에 저장해준다.for문을 통해 가로공간을 할당해주고 위에서 할당한 세로 공간에 각 가로의 주소를 저장해준다.for (int i = 0; i map[i] = (int*)malloc(sizeof(int) * W);}2차원 동적배열 해제해제할 때는 가로먼저 해제해주고 세로를 먼저 해제해야한다.가로공간에 접근할 주소를 세로공간이 보관하고 있기때문에 세로공간을 먼저해제 하면 가로공간에 해제시 필요한 주소를 참고할 수 없다.실습 코드
2차원 배열 선언과 요소 사용형태가 같은 배열이 여러 개 필요한 경우 이들을 모아 배열을 만들 수 있음.이 배열을 2차원 배열이라고 함. 즉, 2차원 배열은 1차원 배열을 요소로 갖는 배열ex) 한 학새의 네 과목 점수를 처리할 때는 요소가 4개인 int형 배열 하나면 되지만 학생 수가 3명으로 늘어나면 같은 형태의 1차원 배열이 3개 필요. 이때 2차원 배열로 만들면 더 편하게 관리할 수 있음2차원 배열 선언 방법int score[i][j]; //i는 행의 수, j는 열의 수를 나타 냄

구조체 포인터 사용구조체는 멤버 변수가 어려개 들어 있어서 크기가 큰 편구조체 변수를 일일이 선언하기 보다 포인터에 메모리를 할당해서 사용하는 편이 효율적, (함수끼리 값을 전달할때 구조체 포인터사용)struct 구조체이름 *포인터이름 = malloc(sizeof(struct 구조체이름));

구조체구조체는 다양한 자료형을 하나로 묶을 수 있는 복합 자료형으로 다양한 형태의 데이터를 처리할 때 기본으로 사용됩니다.C언어는 자료를 체계적으로 관리하기 위해 구조체라는 문법을 제공합니다.배열은 같은 형태의 데이터를 묶어 반복문으로 처리할 수 있는 좋은 자료형이지만 배열을 사용하려면 모든 데이터의 형태가 같아야 합니다.학생의 학번(315), 이름(홍길동), 학점(3.5)처럼 다른 자료형을 하나의 배열로 선언해서 처리하는 것은 불가능합니다.학번은 정수이고 이름은 문자열, 학점을 실수 이기 때문입니다.만약 다른 형태의 데이터들을 하나로 묶어 단일 자료형으로 다룰 수 있다면 학생별로 데이터를 처리할 수있고 반복문으로 많은 학생의 데이터를 훨씬 효율적으로 처리할 수 있습니다.구조체 선언구조체는 하나의 자료형..
배열 사용 이유같은 형태의 많은 데이터를 선언할 경우 사용한다.배열을 사용하면 반복문을 사용하기 용이하다.C언어로 학생 100명의 성적 평균을 구할 경우 성적값을 저장할 float 또는 int 타입의 변수를 100개를 선언하고 모두 더한 뒤 학생 수로 나눌 경우를 생각해보면 모두 더하는 것도 쉽지 않을 뿐 아니라 변수 선언도 쉽지 않다. 하지만 배열을 사용하면 쉽게 변수를 선언하고 반복문을 통해 합을 구하는 것도 쉽다.배열의 선언자료형 배열명[크기];자료형 배열명[크기] = {값, 값, 값};int numArr[10]={11,22,33,44,55,66,77,88,99,110};크기가 10인 int형 배열을 선언 한다는 뜻배열을 선언하면서 값을 초기화할 때는 {}안의 값 개수는 배열의 크기보다 작아도 되지..
동적 할당 영역을 배열처럼 쓰기형태가 같은 변수가 많이 필요할 때 하나씩 동적 할당하는 것은 비효율적입니다.할당한 저장 공간의 수만큼 포인터가 필요하기 때문입니다.따라서 많은 저장 공간을 한꺼번에 동적 할당하여 배열처럼 사용합니다.이때 할당한 저장공간의 시작 위치만 포인터에 저장하면 포인터를 배열처럼 쓸 수 있습니다.배열처럼 사용할 전체 저장 공간을 동적 할당하여 int형을 가리키는 포인터에 그 주소를 저장하면 포인터의 주소값을 int형의 크기만큼 증가시켜 전체 저장 공간을 배열처럼 사용할 수 있습니다.주소 연산주소는 정수처럼 보이지만 자료형에 대한 정보를 갖고 있는 특별한 값입니다.따라서 연산을 자유롭게 할 수 없고 정해진 연산만 가능합니다.주소 + 정수 -> 주소 + (정수 * 주소에 해당하는 변수의..
동적 할당함수프로그램에 필요한 메모리 저장 공간은 프로그램을 작성 할 때 변수나 배열 선언을 통해 확보하지만 언제나 시작부터 변수나 배열 선언을 해서 저장 공간을 확보 할 수 있는 건 아닙니다. 때로는 프로그램 실행 중에 저장 공간을 할당할 수도 있습니다. 이렇게 사용한 저장 공간은 다시 실행중에 재활용을 위해 반납해야 합니다. 이렇게 프로그램 실행 중에 저장 공간을 할당하는 것을 동적 할당 이라 합니다.malloc, free 함수프로그램 실행중 메모리를 동적 할당할 때는 malloc 함수를, 반환할 때는 free 함수를 사용합니다.이 함수들을 사용할 때는 stdlib.h. 헤더파일을 인클루드해야 사용할 수 있습니다.함수 원형void *malloc(unsigned int size);void free(vo..