목록프로그래밍 언어 (80)
나의 IT일지
구조체란 여러가지 자료형을 가진 변수의 집합을 가진 틀로, 자료형으로 구분되며, 구조체형을 정의하고, 구조체 변수를 정의해서 사용한다. 구조체형 정의 구조체변수 정의 struct 구조체명{ 자료형 변수명1; 자료형 변수명2; }; struct 구조체명 변수명; 구조체 내 구조체 구조체변수는 변수이기에 구조체의 필드로 사용할 수 있다. 즉, 새로운 구조체에 다른 구조체를 넣어서 사용할 수 있다. 구조체 밖에서 구조체 정의 구조체 내에서 구조체 구현 struct 구조체1{ 자료형 변수명3; 자료형 변수명4; }; struct 구조체2{ 자료형 변수명1; 자료형 변수명2; struct 구조체1 구조체변수명 }; struct 구조체1{ 자료형 변수명1; 자료형 변수명2; struct 구조체2{ 자료형 변수명3;..
구조체는 여러 개의 자료형을 가진 변수를 모아놓은 자료형으로, 구조체형을 가지고 만든 변수는 일반 변수와 같이 메모리 주소를 가지고 있다. 따라서 포인터를 통해 구조체의 주소를 저장할 수 있다. 포인터란 주소를 저장하는 변수로, 주소를 통해 저장공간에 접근하기 위해서 사용된다. 구조체 포인터 구조체 포인터는 구조체와 포인터의 합성어로, 구조체 변수의 주소를 저장하는 변수를 말한다. 하지만 구조체 포인터는 일반 포인터나 배열포인터와 차이점이 존재한다. 일반 포인터나 배열 포인터는 변수, 배열의 주소를 저장하기 때문에 증감연산자로 변수를 호출하는 것이 가능하다. 하지만 구조체 포인터의 경우, 구조체형을 가진 변수의 주소이기에 증감연산자로 내용에 접근하는 것이 불가능하다. 즉, 구조체 변수에 연산자를 사용하면..
구조체는 배열과 같이 변수의 집합이지만, 변수는 같은 자료형을 가진 변수의 집합인 저장공간으로, 하나의 속성에 여러 데이터를 저장하고 관리할 때 사용한다. 하지만 구조체는 다른 자료형인 변수여도 하나의 집합으로 만든 자료형으로, 여러 속성을 가진 대상의 데이터를 저장, 관리할 때 사용한다. #include #include void find(char*); //선생님의 신상정보(이름 주소 전번 강의과목 생일)를 구조체로 저장 struct teacher { char name[11]; char address[30]; char tel[11]; char lesson[20]; long birth; }; void main() { char name[100]; int a; printf("이름 입력:"); scanf("%s..
우리는 배열을 통해 변수를 묶어서 데이터를 관리한다. 배열같은 경우는 같은 자료형의 변수만 묶어서 사용할 수 있다. 하지만, 우리는 데이터의 자료형이 다른 변수를 한번에 묶어서 관리해야 하는 경우가 존재한다. 예를들면, 어느 선생님들의 이름과 성별, 전화번호나 주소등등 개인정보를 저장할 경우, 서로 다른 배열을 만들어서 저장해야한다. #include #include // strcmp함수를 사용하기 위한 헤더파일 void find(char*); void main() { char name[100]; int a; printf("이름 입력:"); scanf("%s", name); find(name); } void find(char* find_name){ char* name[] = { "이창호", "김성주", "..
동적 할당 메모리란 프로그램의 실행 도중, 할당 받은 메모리로, 정적 메모리를 사용하면 메모리의 낭비가 생기는 것을 방지하기 위해 사용된다. 동적 메모리 할당 1 일반적으로 변수나 배열은 소스코드에서 코드나 배열을 생성해두면, 프로그램을 실행하는 순간 사용할 메모리의 크기를 고려하여 메모리에 주소가 할당되는 경우가 일반적이다. 이를 정적 메 my-it-diary.tistory.com 동적메모리는 "stdlib.h"안에 있는 "malloc()"함수를 사용하여 메모리를 실행 도중에 생성 하는 것 "malloc()"함수는 주소값이 결과값으로 나오기 때문에, 포인터에 저장해서 사용해야 한다. 즉 "포인터 = (포인터형*)malloc(sizeof(자료형));"를 통해 포인터에 주소를 저장 malloc함수의 결과는..
일반적으로 변수나 배열은 소스코드에서 코드나 배열을 생성해두면, 프로그램을 실행하는 순간 사용할 메모리의 크기를 고려하여 메모리에 주소가 할당되는 경우가 일반적이다. 이를 정적 메모리라고 한다. 하지만 프로그램의 실행도중에 메모리를 할당받아야 하는 경우가 있는데, 이를 동적 메모리 할당이라고 한다. 그렇다면 동적메모리를 사용하는 이유는 뭘까? 정적메모리는 프로그램이 실행되기 전에 코딩된 크기만큼 할당된다. 이러한 크기는 실행중에는 변경이 불가능하다. 따라서 크기를 변경하기 위해서는 코드를 일일히 바꿔야 하며, 사용하지 않는 메모리가 발생하여 효율적이지 못하다. 그래서 동적메모리를 사용함으로써, 프로그램이 실행되고 있는 순간에도 사용자가 사용할 배열의 크기만큼 지정하여 메모리를 좀 더 효율적으로 사용 할 ..