휴지통/C 프로그래밍

1. 구조체란 무엇인가? 구조체는 프로그램 개발에 있어서 매우 중요한 요소이다.(없어서는 안되는 요소이다). ​ - 구조체의 정의 '구조체(Structuer)라는 것은 하나 이상의 변수(포인터 변수와 배열포함)를 묶어서 새로운 자료형을 정의하는 도구이다. 즉 구조체를 기반으로 우리는 새로운 자료형을 정의할 수 있다. 물론 이렇게 정의되는 자료형은 기본 자료형과 그 성격에 있어서 조금만 차이가 있다. 프로그램상에서 마우스의 좌표정보를 저장하고 관리해야 한다고 가정한다. 그러면 다음과 같이 두 개의 변수를 선언해야 한다. int xpos; int ypos; ​ 그런데 이 둘은 항상 함께하기 마련이다. 이 둘은 서로 독립된 정보를 표현하는 것이 아니라, 마우스의 위치라는 하나의 정보를 표현하기 때문이다. 예를..
1. 스트림과 데이터의 이동 -무엇이 입력이고 무엇이 출력인가? 데이터의 입력과 출력은 프로그램의 흐름을 뜻하는 것이다. 그렇다면 무엇이 '입력'이고 무엇이 '출력'인가? 프로그램을 중심으로 프로그램 안으로 데이터가 흘러 들어오는 것이 입력이고, 프로그램 밖으로 데이터가 흘러 나가는 것이 출력이다. 가장 대표적인 입력장치로는 키보드가 있으며, 파일도 입력의 대상이 될 수 있다. 그리고 대표적인 출력장치로는 모니터가 있으며, 파일 역시 출력의 대상이 될 수 있다. ​ -데이터의 이동수단이 되는 스트림 서로 떨어져 있는 개체를 연결해주는 다리의 역할을 하는 매개체를 '스트림(Stream)'이라 한다. ​ 실행중인 프로그램과 모니터를 연결해주는 '출력스트림'이라는 다리가 놓여있고, 실행중인 프로글매과 키보드를..
1. 함수포인터와 void포인터 변수만 메모리 공간에 저장되는 것은 아인다. 프로그램 실행의 흐름을 구성하는 함수들은 바이너리 형태로 메모리 공간에 저장되어 호출 시 실행이 된다. 그리고 이렇게 메모리 상에 저장된 함수의 주소 값을 저장하는 포인터 변수가 바로 '함수 포인터 변수'이다. ​ -함수 포인터의 이해 프로그래머가 정의한느 모든 함수는 프로그램 실행시 '메인 메모리'에 저장이 되어서 실행이 된다. 그리고 함수의 이름은, 이렇듯 메모리상에 저장된 함수의 주소 값을 의미한다. 배열의 이름이 배열의 시작주소 값을 의미하듯, 함수의 이름도 함수가 저장된 메모리 공간의 주소 값을 의미한다. 물론 배여르이 이름과 마찬가지로 함수의 이름도 그 형태가 상수이다. 그런데 이러한 함수의 주소 값 저장을 위한 포인..
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], ..
1. 포인터의 포인터에 대한 이해 포인터의 포인터는 포인터 변수를 가리키는 또 다른 포인터 변수를 뜻하는 것으로서 흔히 '이중 포인터' 또는 '더블 포인터'라 부르며, 다음과 같이 포인터 변수의 선언에 사용되는 *연산자를 두개 이어서 선언한다. int **dptr; //int형 이중 포인터 ​ -포인터 변수를 가리키는 이중 포인터변수 (더블 포인터 변수) 포인터 변수는 종류에 상관없이 무조건 주소 값을 저장하는 변수이다. 다만 차이가 나는 것은 포인터 변수가 가리키는 대상일 뿐이다. int main(void){ double num= 3.14; double *ptr = # //변수 num의 주소값 저장 } 위의 코드에서 변수 num과 포인터 변수 ptr의 차이점과 공통점을 정리하자면, 공통점 : 둘..
1. 다차원 배열의 이해와 활용 -2차원 배열, 3차원 배열? ok, 4차원 배열, 5차원배열? No! 1차원배열은 선, 2차원 배열은 평면구조, 3차원 배열은 직육면체의 구조 배열이다. int a1[10] ; //길이가 10인 1차원 배열 int a2[4][5]; //행(가로)4, 열(세로)5인 2차원 배열 int a3[2][3][4]; //높이 2, 행3, 열4 인 3차원 배열 2차원 배열을 이해하면 3차원 배열은 이해가 필요없다. ​ -다차원 배열을 대표하는 2차원 배열의 선언 int arr[3][4] ; //행4, 열3 인 int형 2차원 배열 이렇게 배열이 선언되면 배열요소안에 삽입된 두 개의 숫자는 각각의 요소에 접근할 때 사용하게 되는 인덱스 값이다. 정리하면 배열의 이름이 arr이고 배열요..
신재권
'휴지통/C 프로그래밍' 카테고리의 글 목록 (2 Page)