본문 바로가기

프로그래밍/C, C++21

[C언어] 구조체란 무엇인가. 프로그래머라면, 구조체라는 말을 굉장히 많이 들어보았을것이다. 그렇다면 이 구조체란 무엇인가? 구조체는 구조화된 데이터를 처리할 때 만들어서 사용하고, 다른 자료형을 배열처럼 하나의 묶음으로 묶어서 사용할 수 있도록 해주는 기능이다. 쉽게 말하자면, 김밥이다. 어묵, 단무지, 김, 밥 등 각자의 재료를 따로 모아놓은게 배열이라면, 구조체는 이 모든것들을 모아놓은 김밥 같은 것이다. 예제는 아래와 같다. #include struct kimbap { char danmuji[10]; int ham; float eumok; double kim; }; typedef struct kimbap kimbap; int main(void) { kimbap a = { "hihihi", 5, 3.1, 100000.3 }; p.. 2021. 1. 19.
[C언어] typedef 이란 무엇인가 typedef 이란 이미 사용되는 자료형을 다른 새로운 자료형 이름으로 재정의 할 수 있도록 하는 키워드이다. 쉽게 말하자면, 자료형에 별명을 붙혀주는 것이다. typedef int hihi; hihi a = 10; // hihi는 int형 이런식으로 표현할 수 있게 된다. 여기까지는 너무 쉽다. 그럼 typedef를 왜 쓸까? 구조체의 이름이 길거나, 프로그램 확장성을 위해 사용한다. 만약 int가 4바이트로 할당되는 개발환경을 사용하다가, int가 2바이트로 할당 되는 개발환경으로 갑자기 바꿔야한다면 일일히 모든 코드의 자료형을 수정해야 할 것이다. 하지만 typedef로 선언해 놓는다면, 1줄만 수정하면 된다. 아래는 위키백과에서 퍼온 typedef의 정보이다. typedef는 C와 C++ 프로그래.. 2021. 1. 19.
[C언어] 배열포인터와 포인터배열의 차이 코딩을 하다보면 가끔씩 포인터를 쓸 일이 있다. 그런데 항상 배열포인터와 포인터배열을 헷갈린다. 배열포인터 : Pointer To Array 배열을 가리키는 포인터 포인터배열 : Array Of Pointer 포인터들의 배열 우선 각각의 사용법을 알아보겠다. 1차원 배열 2차원 배열 (배열포인터) 2차원 배열 (포인터배열) int arr[3] = {1, 2, 3, 4, 5}; int *ptr = arr; int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int (*ptr)[3] = arr; int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int *ptr[3] = arr; 알다시피 1차원 배열은 헷갈리지 않고 선언 할 수 있다. 하지만 배열포인.. 2021. 1. 16.