728x90
- 구조체란?
구조체는 struct 키워드로 정의하며 data struct(자료 구조)의 약어로 struct를 사용한다.
- 구조체는 관련 정보를 하나의 의미로 묶을 때 사용한다.
- 구조체 포인터
struct Person { //구조체 정의
char name[20]; // 구조체 멤버 1
int age; //구조체 멤버 2
char address[100]; //구조체 멤버 3
}
struct Person *p1 = malloc(sizeof(struct Person)); //구조체 포인터 선언 및 메모리 할당
// 화살표 연산자로 포인터에서 구조체 멤버로 접근하여 값 할당!
strcpy(p1->name, "홍길동);
p1->age = 30;
- 구조체 포인터 = &구조체 변수
를 통해서도 구조체 포인터 사용 가능
화살표 연산자가 참조의 의미를 띈다고 생각하면 될 듯
연결리스트
연결 리스트는 데이터가 담긴 노드(메모리공간)을 일렬로 연결해놓았다고 해서 연결리스트라고 불린다.
특징 1. 리스트의 중간 지점에 노드를 쉽게 추가하거나 삭제 가능- 특정 노드를 찾으려면 노드를 모두 검색해야 한다.
- 크기가 고정되어 있지 않다.
다른 노드를 가리키는 포인터가 하나씩만 있는 단일 연결 리스트(singly linked list)
typdef sturct s_list //연결 리스트의 노드 구조체
{
void *content; // content의 주소를 저장할 멤버
struct s_list *next; //다음 노드의 주소를 저장할 포인터
} t_list;
next에는 다른 노드의 메모리 주소를 저장한다.
- head node : 단일 연결 리스트의 기준점이며 head라고 부른다. 첫 번째 노드를 가리키는 용도로 데이터를 저장하지 않는다.
- node : 단일 연결 리스트에서 데이터가 저장되는 실제 노드.
연결리스트의 이중 포인터와 포인터
- 이중포인터가 연결리스트 전체, 배열이나 문자열 처럼 생각하고 포인터를 문자열의 문자 자체로 이해하면 될 듯.
출처 : C언어 코딩도장
728x90
'공부 > C\C++' 카테고리의 다른 글
[C/C++] char *와 char []의 차이와 bus error (0) | 2021.03.31 |
---|---|
[C] 가변인자, 가변인자 함수 (0) | 2021.03.18 |
[C/C++] int와 long, unsigned int와 unsigned long의 차이와 혼동으로 인한 문제점 (0) | 2021.03.18 |
[C/C++] cin과 scanf의 차이 (0) | 2021.03.06 |
[C++] using namespace std는 무엇인가 (0) | 2021.03.06 |