목록프로그램/C,C++ (47)
Brise
-- 프로그래머의 편의를 위해 제공되는 매크로이다. 아무래도 디버깅 할 때에 매우 유용하게 사용할 수 있을 것 같다. 매크로 이름 리턴 값 설명 __FILE__ %s 이 매크로를 호출한 파일 이름을 출력한다. __LINE__ %d 이 매크로를 호출한 코드의 행 번호 위치를 출력한다. __DATE__ %s 현재 소스 코드의 컴파일 날짜를 나타내는 매크로 __TIME__ %s 현재 소스코드의 컴파일 시간을 나타내는 매크로[출처] C언어 제공 매크로|작성자 사기꾼 --
-- 보이드(void)변수형이 지정되지 않은 경우. 일반적으로 포인터 연산에 사용됨. void(1 워드) e.g.) void point; 정수형(signed)음의 정수, 0, 양의 정수를 표현할 수 있는 변수형 char (8 비트)short (16 비트)int (1 워드)long (32 비트)long long (64 비트) * int의 경우 16 또는 32비트이다. e.g.) char variable = 0; 양의 정수(unsigned)0과 양의 정수를 표현할 수 있는 변수형 unsigned char (8 비트)unsigned short (16 비트)unsigned int (1 워드)unsigned long (32 비트)unsigned long long (64 비트) * unsigned int의 경우 1..
-- -- call by value : 함수를 호출 할 때에 변수의 '복사본'을 전달. 함수 내부에서 변경된 사항에 대해서는 원본에 영향력을 가지지 않는다. e.g. (int a) call by reference : 함수를 호출할 때에 변수의 '링크(포인터)' 를 전달. 함수 내부에서 변경될 때에 포인터를 참조하여 변경되므로 바로 원본이 변경된다. e.g. (int * a) C언어에서 배열은 기본적으로 포인터이므로 int a[] = int * a call by value로 배열을 호출하는 것은 불가능하다. http://egloos.zum.com/coldwave/v/2377331 -- --
-- -- 12345678910111213141516171819202122232425262728293031323334353637383940#include #define ARR_ROW 4#define ARR_COL 3void add_array(int row, int col, int Arr[][col]){ int i,j; for(i=0; i
#include void test1(void){ printf("TEST\n");}void test2(void){ printf("TEST2\n");}int main(void){ test1(); test2(); void (*test_pointer[2])(void); test_pointer[0] = test1; test_pointer[1] = test2; test_pointer[0](); test_pointer[1](); return 0;}
Efficient C-coding 에서는 다음과 같은 목표들을 이루기 위해 코딩을 수행한다. - 낮은 연산시간- 적은 코드 사이즈- 적은 램 차지용량- 적은 레지스터 사용량 컴파일 시간보다는, 컴파일된 코드의 실행시간이 중요하다.gcc의 최적화 옵션을 사용하면, 실행시간이 줄어들 수 있지만,사용자가 원하지 않은 결과를 낼 가능성이 존재하기 때문에(매뉴얼의 방법에 맞춰서 컴파일한다면 그런 가능성이 줄어든다.)가능하다면, 최대한 사용자가 컴파일러에 친숙하게 코딩 하는 것이 중요하다. 0. 변수선언룩업테이블 (메모리 H, 연산시간 L) 1. 연산관련2. 분기관련2.1 루프2.2 if-else / switch2.3 함수 call 1. 연산 관련 - 부동 소수점 연산을 피하자(Avoid float, double)..
C언어에서 가장 이해하기 힘든 것이 바로 '포인터'이다. 포인터란 말 뜻대로 가리키는 것이다. 무엇을? 가리키냐 하면 바로 변수를 가리키는 것이다. '능엄경'이라는 책에 '견월망지' 라는 말이 있다. 바로 '달을 보기 위해서는 손가락 끝을 보지말고 손가락 끝이 가리키는 달을 보라' 라는 말이다. 이 말마따나 포인터란 당연히 손가락 끝을 가리키는 것이다. 포인터 주소의 크기는 프로세서가 사용하는 메모리 주소의 크기와 동일하다. 왜냐고?? 포인터는 '주소'를 가리키기 때문이다. 예를 들어 32비트 프로세서의 포인터는 32비트가 된다. 그런데 여기서 중요한점은 아무런 것도 해주지 않으면(void) 포인터가 가리키는 것이 '달'인지 '해'인지 모른다는 것이다. 때문에 '~~한 타입의 포인터' 이다. 라고 선언해..