CSE/C Language
-
[C Language] 이클립스 C/C++ 개발 환경 구축 !!CSE/C Language 2015. 9. 16. 16:29
윈도우에서 이클립스 IDE를 통해서 C / C++ 개발 환경을 구축해 보도록 하겠습니다! 이클립스를 통해 개발을 하는 이유는... 솔직히 Visual Studio 설치하기엔 너무 무겁고, 오래걸리고, 걍 깔끔해보이지만, 그래도 이클립스가 더 손에 익어서..? 아무튼. 1. 이클립스를 다운 받아서 압축해제 합니다. http://www.eclipse.org/ 에 접속하셔서 다운로드를 누르신 후, 아래와 같은 'Eclipse IDE for C/C++ Developers' 버전으로 다운받아주세요 !! * Ubuntu 이든 64 or 32 bit 이든 맞게 받으시길 바랍니다 ! 압축해제하시면 아래와 같이 구성되어 있을 겁니다 ! 2. 아래 사이트 진입 후, Installer를 다운받습니다 !! http://www..
-
[C Language] 43. 포인터 - 매개변수 처리 총정리CSE/C Language 2015. 8. 10. 11:14
1. 매개변수가 1차원 배열인 경우 1차원 배열이 int 형인 경우 1234567891011121314151617181920212223242526272829/* * parameter.c * * Created on: 2015. 8. 10. * Author: Yeonsu */ #include void print_temp(int *, int); int main(void) { int sum; int tmp[] = { 11, 42, 19, 82, 57 }; print_temp(tmp, sizeof(tmp) / sizeof(int)); return 0;} void print_temp(int *tmp, int length) { int i; for (i = 0; i
-
[C Language] 42. void형 포인터 - C 언어CSE/C Language 2015. 8. 5. 14:33
1. void 형 포인터란? 널 포인터가 포인터임에도 불구하고 어느 곳도 가리키고 있지 않는 데 반해, void 형 포인터는 무엇이든 가리킬 수 있는 포인터이다. 널 포인터가 아무것도 넣을 수 없는 자루라면 void 형 포인터는 무엇이든 들어가는 자루이다. void 형 포인터는 현재 가리키고 있는 대상체가 정해져 있지 않는 포인터이다. 바꾸어 말하면 현재 가리키는 대상체가 정해져 있지 않기 때문에 대상체만 정해지면 얼마든지 사용할 수 있다는 의미이다. 2. void 형 포인터 변수 정의 char 형 포인터는 'char *' 로 표기할 수 있고 int 형 포인터는 'int *'로 표기할 수 있다. 마찬가지로 void 형 포인터는 'void *'로 표기한다. void *void_p; void_p는 포인터 변..
-
[C Language] 41. 포인터의 개념을 깨는 '0'CSE/C Language 2015. 8. 5. 13:47
지금까지 배운 포인터에 대한 개념으로 설명이 불가능한 프로그램이 있다. 아래 예제를 보도록하자. 1234567891011121314151617181920/* * nullp.c * * Created on: 2015. 8. 5. * Author: Yeonsu */ #include int main(void) { char *char_p; char_p = 0; printf("%x\n", char_p); return 0;} cs 포인터를 설명할 때 수없이 강조했던 내용이 '포인터 변수에는 주소 값 이외에는 어떠한 값도 할당할 수 없다'라는 것이다. 하지만 위의 프로그램으로 0 이라는 정수 값에 포인터 변수에 할당되고 있으며 컴파일 문제가 발생하지 않는다. 컴파일러는 위의 프로그램을 어떻게 해석하길래 문제가 발생하지..
-
[C Language] 40. 문자열 함수 - C 언어CSE/C Language 2015. 8. 5. 13:29
1. gets(), fgets() 문자열을 사용자로부터 받아들일 때 가장 많이 사용하는 함수는 바로 gets()이다. 하지만 이것은 상당히 위험한 함수이며 초보자는 반드시 fgets()를 사용해야 한다. 이번 단원에서는 gets()의 위험성을 알아보고 이 대신 fgets()를 사용할 것을 권장한다. gets()는 리눅스 메뉴얼에 보면 사용하지 말라는 뜻에서 '저주받은 함수'라는 극한적인 말로 표현되어 있다. 얼마나 위험한지 아래 예제를 통해 알아보도록 하자. 1234567891011121314151617181920 /* * gets.c * * Created on: 2015. 8. 5. * Author: Yeonsu */ #include int main(void) { char name[5]; gets(na..
-
[C Language] 39. 포인터의 포인터 - C 언어CSE/C Language 2015. 8. 5. 11:32
1. 포인터의 포인터란? 이해를 돕기 위해서 배열을 먼저 예로 들어 보자. - 1차원 배열: int apple[5]; - 2차원 배열: int banana[2][10]; - 3차원 배열: int chocolate[3][4][5]; 1차원 배열은 관리 대상이 1차원이며 모두 5개의 요소로 구성되어 있다. 2차원 배열은 관리대상이 2차원이다. 2차원 이라는 것은 1차원 배열의 모임이므로 이것을 '배열의 배열'이라고 칭할 수 있다. 배열의 배열이라는 것은 결국 배열을 관리하는 배열이 존재한다는 것이다. 3차원 배열은 '배열의 배열의 배열'이 되며 2차원 배열을 관리하는 배열이라고 생각하자. 이를 포인터로 적용하면 아래와 같다. - 포인터 변수 정의: char *apple; - 포인터의 포인터 변수 정의: ch..
-
[C Language] 38. 문자열과 포인터 - C 언어CSE/C Language 2015. 8. 4. 15:47
1. 문자열이란? "In C, strings are arrays of characters." C에서의 문자열에 대한 정의를 보면, 문자열 형이 없고 단지 문자들의 집합인 배열로 처리한다는 것을 알 수 있다. 또한, 포인터적인 관점에서 본다면 시스템은 문자열 전체에 전혀 관심이 없다. 시스템은 오로지 문자열 중에서도 가장 첫 번째 문자가 저장된 곳의 위치에만 관심이 있을 뿐이다. 문자열의 끝은 널 문자로 판별하기 때문에 널 문자가 없는 문자열은 C에서 상당히 위험한 존재로 여겨지고 메모리 에러의 대부분을 차지한다. 2. 문자열 포인터 변수 int 형 포인터 변수가 int 형 변수를 가리킬 수 있는 것과 마찬가지로 문자열 포인터 변수도 문자열을 가리킬 수 있다. 좀 더 정확히 말하면 문자열 중에서도 가장 첫..
-
[C Language] 37. 2차원 배열과 포인터 - C 언어CSE/C Language 2015. 8. 4. 15:00
1. 대상체의 개념 다음은 2행 3열짜리 tmp 배열을 정의한 것이다. 12int tmp[2][3]; cs int 형을 저장할 수 있는 방이 6(2X3)개가 생성되었다. 2 차원 배열을 정의하고 사용하는 것은 쉬워 보이나 대상체의 개념이 적용되면서 2 차원 배열은 생각보다 쉽게 정복되지 않는다. 아래 예제를 통해 2 차원 배열의 다양한 형태를 확인해 보도록 하자. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253/* * pointer.c * * Created on: 2015. 7. 21. * Author: Yeonsu */ #include #define PRINT_D(x) prin..