본문 바로가기

전체 글846

1차원 배열, 포인터 배열이란? 다수의 데이터를 저장하고 처리하는 경우에 유용하게 사용할 수 있는 것이 배열이다. 배열의 선언 방법 자료형 배열이름 길이정보 순이다 즉 int arr[20]; //int형 변수 20개로 이뤄진 배열, 이름은 arr이다. 4 * 20개 byte double arr2[10]; // 길이가 10인 double형 1차원 배열 8*10개 byte 이렇게 배열을 선언 가능하다 . 각 배열마다 각 자료형의 크기만큼 바이트가 할당되어 있다. 배열의 접근 방법 int arr[3]; //길이가 3인 int형 1차원 배열 위의 배열로 각 배열에 접근을 하는 방법은 .. arr[0]= 1; // 배열 arr에 첫 번째 요소에 1을 저장 arr[1]= 2; // 배열 arr에 두 번째 요소에 2을 저장 arr[3]=.. 2021. 1. 23.
구조체와 사용자 정의 자료형2 1. 구조체의 정의와 typedef 선언 구조체 변수를 선언할 때에는 무조건 struct 선언을 추가해야 한다. 하지만 이것이 여간 귀찬흔게 아니다. int형 변수 num을 선언할 때 그저 int num이라 선언하듯이, person형 구조체 변수 man을 선언할 때에도 struct 선언 없이 그저 person man이라 하고 싶다. 그렇다면 구조체를 정의한 후에 typedef 선언을 추가해야 한다. - typedef 선언 typedef 선언은 기존에 존재하는 자료형의 이름에 새 이름을 부여하는 것을 목적으로 하는 선언이다. 예를 들어서 다음과 같이 typdef선언을 하게 되면 typedef int INT; //int의 또 다른 이름 INT를 부여! 이로 인해 다음의 뜻을 컴파일러에 전달하게 된다. 자료형.. 2021. 1. 22.
구조체와 사용자 정의 자료형1 1. 구조체란 무엇인가? 구조체는 프로그램 개발에 있어서 매우 중요한 요소이다.(없어서는 안되는 요소이다). ​ - 구조체의 정의 '구조체(Structuer)라는 것은 하나 이상의 변수(포인터 변수와 배열포함)를 묶어서 새로운 자료형을 정의하는 도구이다. 즉 구조체를 기반으로 우리는 새로운 자료형을 정의할 수 있다. 물론 이렇게 정의되는 자료형은 기본 자료형과 그 성격에 있어서 조금만 차이가 있다. 프로그램상에서 마우스의 좌표정보를 저장하고 관리해야 한다고 가정한다. 그러면 다음과 같이 두 개의 변수를 선언해야 한다. int xpos; int ypos; ​ 그런데 이 둘은 항상 함께하기 마련이다. 이 둘은 서로 독립된 정보를 표현하는 것이 아니라, 마우스의 위치라는 하나의 정보를 표현하기 때문이다. 예를.. 2021. 1. 21.
문자와 문자열 관련 함수 1. 스트림과 데이터의 이동 -무엇이 입력이고 무엇이 출력인가? 데이터의 입력과 출력은 프로그램의 흐름을 뜻하는 것이다. 그렇다면 무엇이 '입력'이고 무엇이 '출력'인가? 프로그램을 중심으로 프로그램 안으로 데이터가 흘러 들어오는 것이 입력이고, 프로그램 밖으로 데이터가 흘러 나가는 것이 출력이다. 가장 대표적인 입력장치로는 키보드가 있으며, 파일도 입력의 대상이 될 수 있다. 그리고 대표적인 출력장치로는 모니터가 있으며, 파일 역시 출력의 대상이 될 수 있다. ​ -데이터의 이동수단이 되는 스트림 서로 떨어져 있는 개체를 연결해주는 다리의 역할을 하는 매개체를 '스트림(Stream)'이라 한다. ​ 실행중인 프로그램과 모니터를 연결해주는 '출력스트림'이라는 다리가 놓여있고, 실행중인 프로글매과 키보드를.. 2021. 1. 21.
함수 포인터와 void 포인터 1. 함수포인터와 void포인터 변수만 메모리 공간에 저장되는 것은 아인다. 프로그램 실행의 흐름을 구성하는 함수들은 바이너리 형태로 메모리 공간에 저장되어 호출 시 실행이 된다. 그리고 이렇게 메모리 상에 저장된 함수의 주소 값을 저장하는 포인터 변수가 바로 '함수 포인터 변수'이다. ​ -함수 포인터의 이해 프로그래머가 정의한느 모든 함수는 프로그램 실행시 '메인 메모리'에 저장이 되어서 실행이 된다. 그리고 함수의 이름은, 이렇듯 메모리상에 저장된 함수의 주소 값을 의미한다. 배열의 이름이 배열의 시작주소 값을 의미하듯, 함수의 이름도 함수가 저장된 메모리 공간의 주소 값을 의미한다. 물론 배여르이 이름과 마찬가지로 함수의 이름도 그 형태가 상수이다. 그런데 이러한 함수의 주소 값 저장을 위한 포인.. 2021. 1. 21.
다차원 배열과 포인터의 관계 1. 2차원 배열이름의 포인터 형 ​ -1차원 배열이름의 포인터 형과 2차원 배열이름의 포인터 형 int arr[20]; //arr는 int형 포인터 여기서 arr는 int형 포인터이다. 따라서 다음과 같이 함수의 인자로 전달되기 위해서는, SimpleFunc(arr); 함수의 매개변수가 다음과 같이 int형 포인터로 선언되어야 한다. void SimpleFunc(int *ptr){...} ​ 2차원 배열의 이름이 더블 포인터 형이라는 오해를 절대로 해서는 안된다. ​ -2차원 배열이름이 가리키는 것? int arr[3][3]; arr가 가리키는 것은 인덱스 기준으로 [0][0]에 위치한(2차원 배열에서도 이를 첫번째 요소라 한다)첫번째 요소이다. 그런데 2차원 배열의 경우 arr[0], arr[1], .. 2021. 1. 21.