본문 바로가기

포인터4

[C언어와 친구들] 구조체(Struct)의 멤버가 포인터일 때, 구조체 포인터 변수 선언(동적메모리할당) 구조체 포인터가 왜이렇게 헷갈릴까. 다시 복습. - 포인터란 특정한 데이터가 저장된 주소값을 보관하는 변수 - 즉, 포인터도 변수다! 구조체 포인터도 마찬가지이다. - 구조체를 가리키는 포인터를 구조체 포인터라고 한다. - 즉, 구조체 포인터도 변수다! int형 포인터는 int *ptr1; 형식으로 선언했다. 여기서, 구조체는 struct [구조체 이름]이 자료형이다. struct [구조체 이름]형 포인터는 struct student *ptr2; 형식으로 선언했다. 여기서 struct가 있기 때문에 ptr2가 구조체라고 착각할 수 있지만 😵‍💫 ptr2는 구조체를 가리키는 포인터일 뿐 절대 구조체가 아니다. 💡💡💡💡💡💡💡 구조체를 가리키는 포인터로서 일반적인 포인터의 사용 방법이 비슷하지만, 구조체 멤버.. 2022. 10. 24.
[C언어와 친구들] 구조체(Struct)와 연결리스트(Linked List) wow 0. typedef 문법 - typedef는 'type define'의 줄임 표현 - 기존 자료형 이름의 길이가 긴 경우 자료형을 재정의하여 사용하는 문법 - #define 과 비슷해 보이지만 다른 기능 - 배열, 포인터와 같은 형식도 재정의 가능 typedef int MY_DATA[5]; MY_DATA temp; // int temp[5]; 라고 선언한 것과 같음 int (*p)[5]; // 20바이트의 사용 범위를 가지는 포인터 변수 typedef int MY_DATA[5]; MY_DATA *p; // int (*p)[5]; 라고 선언한 것과 같음 1. 구조체(Struct) - 사용자 정의 자료형 정의 방법 중 한 가지 - C언어는 크기나 형식이 다른 데이터를 그룹으로 묶어 사용할 수 있도록 '구조체.. 2022. 10. 24.
[C언어와 친구들] C언어의 *포인트는 포인터 1. 포인터 - 포인터란 특정한 데이터가 저장된 주소값을 보관하는 변수 - 즉, 포인터도 변수다! - 메모리 상에 위치한 특정한 데이터의 (시작)주소값을 보관하는 변수 - 포인터 역시 변수이기에 다른 변수와 마찬가지로 형(type)을 가짐 - 즉, int형 데이터 주소값을 저장하는 포인터와 char형 데이터 주소값을 저장하는 포인터가 서로 다른다. 예를 들어, p라는 포인터가 int 데이터를 가리키고 싶다고 하면 다음과 같이 사용하면 된다. // (포인터에 주소값이 저장되는 데이터의 형)* (포인터의 이름); int* p;// 라고 하거나 // (포인터에 주소값이 저장되는 데이터의 형) *(포인터의 이름); int *p;// 로 하면 된다. 이러면 위의 포인터 p는 int형 데이터의 주소값을 저장하는 변.. 2022. 10. 24.
[C언어와 친구들] 배열 .. 너 .. 포인터랑 뭐 있어? 배열은 C언어가 제공하는 가장 기본적인 자료구조이면서, 몇 없는 ... 그냥 다(?) 없는 C언어의 자료구조 중 하나이다. 배열이란, 컴퓨터 메모리 상에 같은 타입의 변수를 연속적으로 여러 개를 한꺼번에 정의할 수 있는 방법이다. 배열의 장점은 크게 두 가지가 있다. 1) 공간 효율이 좋다. 구조가 단순하기 때문에 정보 자체를 기억하는 메모리 외에 추가로 소모하는 메모리가 전혀 없이 공간효율이 좋다. 정수형 변수 100개를 저장하는 int arr[100] 배열은 정확하게 정수 100개분만큼의 메모리만을 요구한다. 2) 검색 속도가 일정하다. 배열의 크기가 아무리 커지더라도 검색 속도가 일정한다. 배열의 첨자 연산은 포인터를 통해 시작 번지에 첨자 *요소 크기를 더하는 간단한 동작이므로 임의의 한 요소를 .. 2022. 10. 22.