/* 본 포스팅은 최호성 저자의 '독하게 시작하는 C프로그래밍' 교재를 참조로 작성되었음을 먼저 알려드립니다. */ 함수의 이름 또한 배열의 이름처럼 '주소 상수'에 부여한 식별자다. 따라서 함수의 이름도 포인터 변수에 저장할 수 있다. 다만 변수의 자료형이 함수 호출에 필요한 정보들을 포함하고 있어야 변수를 이용해서 함수를 호출할 수 있다. // 호출에 필요한 정보는 매개 변수, 호출 규칙, 반환 자료형 등이 있다. 그래서 'void *'에 함수의 이름을 저장할 수는 있으나 호출을 할 수는 없다. 아래의 코드는 함수 포인터를 구체적으로 다루기에 앞서 함수의 이름이 주소임을 확인하기 위한 코드다. #include int main(void) { // void *는 어떤 주소든 담을 수 있는 자료형이다. /..
/* 본 포스팅은 최호성 저자의 '독하게 시작하는 C프로그래밍' 교재를 참조로 작성되었음을 먼저 알려드립니다. */ 함수 호출 규칙(calling convention)은 호출자 함수가 피호출자 함수를 호출하는 과정에서 매개변수를 전달하는 순서 및 매개변수가 사용한 메모리 관리방법 등에 관한 규칙이다. 대표적으로 __cdecl, __stdcall, __fastcall 등 세 가지 정도가 있는데 이 세 가지가 C 언어의 표준에서 정의하는 것은 아니다. 모두 약간씩 차이가 있는데 C/C++ 컴파일러의 기본 함수 호출 규칙은 __cdecl이다. 우리가 자동변수를 선언할 때 auto를 생략해도 되는 것처럼 __cdecl도 생략할 수 있다. 따라서 아무것도 기술하지 않으면 함수 호출 규칙은 __cdecl이다. 제대..
# 셸 정렬 개념 및 원리 셸 정렬(shell sort)은 Donald L. Shell 이 제안한 방법으로 삽입 정렬이 어느 정도 정렬 되어 있는 배열에 대해서는 대단히 빠르다는 점을 이용해 만든 방법이다. 셸 정렬은 삽입 정렬의 시간 복잡도 $O(n^2)$보다 빠르다. 삽입 정렬의 문제점은 요소들일 삽입될 때, 이웃한 위치로 한 칸씩만 이동한다는 점이다. // 제 블로그에 삽입 정렬로 검색하시면 관련 설명과 알고리즘을 확인해보실 수 있습니다. 삽입 정렬은 for 루프를 이용해 인접한 위치부터 한 칸씩 이동하며 삽입할 위치를 탐색하므로 만약 삽입할 원소가 들어갈 자리가 멀리 떨어져 있다면 한 칸씩 이동하는 설계 때문에 불필요하게 많은 반복과 비교를 해야 한다는 단점이 있습니다. 셸 정렬에서는 요소들이 멀..
# 짧은 소감 대학교 친구가 알고 있는 페이스북 개발자분께 대학생들을 위한 세미나 요청을 했는데, 흔쾌히 수락해주셨다며 세미나를 주최했다. 당연 나는 해외 취업 뿐만 아니라 업계현황 등이 궁금했기에 가장 먼저 참여하겠다는 의사를 밝혔다. 그리고 오늘 다니고 있는 대학교에서 열린 페이스북 개발자와 함께하는 세미나에 참여했다. 그 분이 말씀해주신 것들을 토대로 개발자를 꿈꾸는 분들에게 도움이 됐으면 좋겠다는 생각에 이렇게 바로 포스팅을 작성하게 됐다. # 개발과 관련 있는 혹은 없는 것들에 관한 여러 가지 조언 1. 프로그래밍 언어는 별로 중요하지 않다. 실제 회사 업무에서는 자기가 쓰는 언어가 아니었을지라도 한 달 안에 알아서 숙지해야할 경우가 얼마든지 생길 수 있다. 따라서 언어를 얼마나 많이 아느냐가 ..
/* 본 게시물은 '핵심만 골라 배우는 안드로이드 스튜디오 & 프로그래밍(Android Studio 2 Development Essentials) | 닐 스미스 지음' 의 내용을 토대로 작성되었습니다. */ # 서로 다른 안드로이드를 장치를 위한 디자인 애플리케이션의 사용자 인터페이스는 가능한 한 많은 종류의 화면 크기에서 제대로 보일 수 있도록 신중하게 디자인되어야 한다. 이때 가장 중요한 것은 서로 다른 장치에서 레이아웃의 크기 조정이 올바르게 될 수 있게 하는 것이다. 안드로이드 기반의 스마트폰과 태블릿은 사용자가 세로(portrait)와 가로(landscape) 방향 모두를 사용할 수 있다는 것이다. 따라서 디자인이 잘된 사용자 인터페이스라면 모든 방향에서 그런 변경에 적응할 수 있어야 하고, 사..
- Total
- Today
- Yesterday