본문 바로가기

Programming/C & C++43

Unix / Linux 에서 현재시간 측정하기 #include #include #include #include #include #include int main() { struct timeval mytime; // 현재 시간을 ms 단위로 얻어온다. gettimeofday(&mytime, NULL); printf("%ld:%ld\n", mytime.tv_sec, mytime.tv_usec); // 시간을 알기 쉽게 출력한다. // 시간에 9를 더한 이유는 GMT를 기준으로 9시간 더 지난 시간이기 때문 struct tm *tm_ptr; tm_ptr = gmtime(&mytime.tv_sec); printf("현재시간 : %d년 %d월 %d일 %d:%d\n", tm_ptr->tm_year + 1900, tm_ptr->tm_mon +1, tm_ptr->t.. 2008. 1. 16.
난수 (Random) 함수 #include // rand(), srand() 함수를 사용하기 위해서 인클루드 함 #include // time() 함수를 사용하기 위해서 인클루드 함 #include int random(int); void main() { int num; srand( time (0) ); // 프로그램 수행될때 마다 똑같은 난수가 발생되는것을 예방 // 시스템 시간을 난수 씨앗값으로 사용해서 매번 다른 난수가 발생함 // 주의사항 : 이부분은 프로그램 시작할때 딱 1회만 수행되게 해야함 for(int i=0; i 2008. 1. 2.
pointer 와 reference 의 차이점 포인터는 그 포인터가 가리키는 대상을 변경 가능합니다. 그 대상의 물리적 위치 정보(시작 주소)를 저장하고 있으니까.... 레퍼런스는 가리키는 대상을 변경할 수 없습니다. 레퍼런스의 대상 변수가 어느것인가가 정해지는 것은 레퍼런스가 초기화(정의와 동시에 초기화)될 때 뿐이죠. 하지만 레퍼런스는 대상을 변경할 수 없는 대신에 역참조 연산자를 안붙이고 원래의 변수처럼 사용할 수 있습니다. 기능이 제한된 아주 특수한 형태의 포인터라고 해도 됩니다. (이게 레퍼런스의 용도라고 할 수 있죠. 사실상 참조에 의한 호출을 위해서만 사용합니다.) C++에서 레퍼런스가 생겼어도 포인터는 여전히 그 유용성을 갖고 있죠. 어느 한 변수 이름이 가리키는 대상을 제어의 조건에 따라 간단히 변경할 수 있다는 것은 대단히 매력적인.. 2008. 1. 2.
struct 와 typedef struct 의 차이점 struct _tagPoint{ int x; int y; }; POINTS는 선언되지 않은 심볼이므로 struct _tagPoint POINTS;라고 하면, POINTS라는 이름의 구조체 변수가 생성됩니다. 당연히 POINTS는 타입으로 선언된 것이 아니므로 POINTS s;라는 구문은 오류입니다. struct의 임무는 뒤에 나오는 식별자 _tagPoint가 구조체 태그이름임을 나타내는 지시어입니다. 이는 C와의 하위 호환성을 위해 남겨둔 것으로, C++에서는 선택적으로 사용해도 되고, 사용하지 않아도 상관 없습니다. C에서 변수선언은 기본적으로 "변수 선언이 가능한 키워드로 시작"될 때만 변수 선언으로 인식하도록 되어 있는 구조입니다. 따라서 한 문장의 시작이 int, char, void 등의 타입을 .. 2008. 1. 2.