Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- ESP-01
- 아두이노 우노
- scroll-snap
- dp문제
- 백준자바
- ESP8266WiFi
- 리액트네이티브
- scss
- aspect-ratio
- 백준문제풀이 #백준 #백준문제 #스타트택시
- peap
- ESP8266
- 2193
- 연결리스트
- 백준 #백준2661 #좋은수열 #Java #코딩
- reactNative
- 백준풀이
- 백준java
- CSS
- @supports
- 포인터
- CSS Flex
- 노마드코더
- 백준15988풀이
- ESP-01WiFi
- 이친수문제
- C
- Flexible box
- 프로젝트초기설정
- 백준
Archives
- Today
- Total
코딩 농장
[C/포인터] C언어 포인터를 사용해보자 본문
728x90
C언어는 다시는 쳐다볼 일 없을 줄 알았는데, 전공 알고리즘 시간에 C언어를 이용하게 되었다.
예전에 포인터를 이해했었다는 생각 하나로 공부를 안 하고 들어갔더니, 포인터를 사용할 수가 없더라... 그래서 시작한다.
이번 목표는 '연결리스트 만들기'이다.
1. 포인터 사용법
int main() {
int a = 1;
int* b = &a;
printf("%d %d %d %d %d", a, &a, b, *b, &b);
}
결과)
1 7863224 7863224 1 7863212 |
포인터는 {자료형} * {변수명}; 이렇게 선언한다.
위의 예시처럼 int* b; 이렇게.
b=&a, *b=&a 값을 주는 방식은 이렇게 둘 다 가능하다.
그리고 b가 a의 주소값을 가지고 있으면, *b는 b가 가진 주소가 가리키는 곳으로 향한다.
이해를 돕기 위한 그림으로 나타내자면 이렇게.
이 정도 개념만 제대로 알고 있어도 반은 한 것이다.
2. struct 안에서 포인터 사용
이런 느낌의 연결리스트를 만들기위해, node struct를 만들어보자.
data필드와 link 필드가 필요하고, head와 node를 다르게 둘 것이다.
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int data;
struct ListNode* link;
}ListNode;
typedef struct {
ListNode * head
}ListHead;
void init(ListHead* h) {
h->head = NULL;
}
int main() {
ListHead header;
init(&header);
}
짜잔!
일단 ListHead 구조와 ListNode 구조에서 포인터가 쓰였다.
그리고 init의 parameter가 포인터다!
main에서 선언한 header 구조 안의 head값을 초기화하려고 포인터를 썼다.
지금 저 상황을 그림으로 표현하면
이런 상황쯤 될 것이다.
ListHead 타입 header는 ListNode를 가지고 있는데, 요 놈이 NULL 이니까!
다음 포스팅은 이제 본격적으로 ListNode를 써서 연결리스트를 구현해볼 것이다.
'전공 공부 > 알고리즘' 카테고리의 다른 글
[C/포인터] C언어 포인터를 사용해보자 (2) (0) | 2021.05.20 |
---|
Comments