-
3.4 구조체와 포인터자료구조(C)/배열,구조체,포인터 2020. 7. 17. 11:58
구조체에 대한 포인터를 선언하고 포인터를 통하여 구조체 멤버에 접근할 수 있다. 표기법은 "->"이다. ps가 구조체를 가리키는 포인터라 할 때, (*ps).i 보다는 ps->i라고 쓰는 것이 더 편리하다. 자료 구조에서 구조체에 대한 포인터도 자주 함수의 매개변수로 전달된다. #include #include #include typedef struct studenTag { char name[10]; int age; double gpa; } student; int main() { student *s; s = (student *)malloc(sizeof(student)); if (s == NULL) { fprintf(stderr, "메모리가 부족해서 할당할 수 없습니다."); exit(1); } strcpy..
-
3.3 동적 메모리 할당자료구조(C)/배열,구조체,포인터 2020. 7. 17. 11:10
동적 메모리 할당(dynamic memory allocation) C언어에서는 필요한 만큼의 메모리를 운영체제로 부터 할당받아서 사용하고, 상용이 끝나면 시스템에 메모리를 반납하는 기능이 있다. 히프(heep) 동적 메모리가 할당되는 공간 운영체제가 사용되지 않는 메모리 공간을 모아 놓은 공간이다. 동적 메모리 할당 코드 int *p; p = (int *)malloc(sizeof(int)); 동적메모리 할당 *p = 1000; 동적메모리 이용 free(p); 동적메모리 반납 malloc() size 바이트 만큼의 메모리 블록을 할당한다. 동적 메모리 블럭의 시작 주소를 반환한다. 반환되는 주소의 타입은 void *이므로 이를 적절한 포인터로 형변환시켜야 한다. 포인터로만 사용이 가능하다. *p = 100..
-
3.2 포인터자료구조(C)/배열,구조체,포인터 2020. 7. 13. 18:09
포인터(pointer) 다른 변수의 주소를 가지고 있는 변수이다. ex) int a = 100; int *p; p = &a; p가 a를 가리킨다. 포인터와 관련된 연산자 & : 주소 연산자(변수의 주소를 추출한다.) * : 간접참조 연산자(포인터가 가리키는 곳을 가리킨다.) 역참조 연산자라고도 한다. ex) int a; //정수형 변수 p = &a //변수의 주소를 포인터로 저장 int a = 20 *p = 200; //포인터 p가 가리키는 곳에 200을 저장한다 -> a = 200; NULL 포인터 어떤 객체도 가리키지 않는 포인터이다. 포인터가 아무것도 가리키고 있지 않을 때는 항상 널포인터 상태로 만들어 두는 것이 좋다. 함수 매개변수로 포인터 사용 포인터는 함수의 매개변수로 전달될 수 있다. 특정..
-
3.1 배열자료구조(C)/배열,구조체,포인터 2020. 7. 9. 17:34
배열(array)의 개념 동일한 타입의 데이터를 한 번에 여러 개 만들 때 사용된다. "연속적인 메모리 공간"이 할당되고 index 번호를 사용하여 쉽게 접근이 가능하다. -> 렌덤 억세스: 기억 장치에서 자료를 읽거나 쓸 때 기억 장소에 관계없이 동일한 접근 시간이 걸리는 접근 방식. 즉, 기억 장치에 저장된 자료를 차례대로 접근하지 않고 거의 동일한 시간 내에 임의의 장소를 찾아 접근할 수 있는 방식이다. ex) int list[6]; 배열 ADT array 객체: 쌍의 집합 연산: - create(size) ::= size개의 요소를 저장할 수 있는 배열 생성 - get(A, i) ::= 배열 A의 i번째 요소 반환. - set(A, i, v) ::= 배열 A의 i번째 위치에 값 v 저장. c에서는..