컴퓨터공부/C & C++ & STL 71

MAC의 C언어 시작하기(XCode)

1. XCode를 받아서 C/C++ 프로젝트를 선택하면 됨. 출처 : https://dojang.io/mod/forum/discuss.php?d=175&parent=582 http://www.itpaper.co.kr/64489/ 2. Visual Studio Code 설치, extension에서 c/c++ for visual studio code 설치 끝. (실제로 해보지는 않았음, C compiler를 위해 XCode를 깔아야 한다고 한다. "C/C++ Compile Run extension" 을 깔면 XCode를 안 깔아도 되지 않을까? ) 출처 : https://ldgeao99.tistory.com/203 https://medium.com/gdplabs/build-and-debug-c-on-visu..

arraylist 와 list 차이점

arraylist 와 list 차이점은 아래 글과 링크로 대신합니다. arraylist 는 아이템타입이 object형입니다. 레퍼런스타입을 넣을때는 상관없지만 value타입을 넣는다면 box과 unbox이 일어나서 퍼포먼스가 좋지 않죠 ArrayList는 타입을 지정하지 않기 때문에, 한개의 컬렉션에서 다양한 타입의 개체들을 담을때에는 상관 없지만, 대부분 한개의 컬렉션에서 한개의 타입들의 컬렉션을 유지한 상황에서는 컬렉션 값을 가져올때, 일일이 typecasting을 해줘야 하는 번거로움과, 캐스팅 한 개체가 넣을때 썼던 개체가 다를때에 컴파일 타임에서 오류를 발견할 수가 없습니다. 참고 & 출처 : http://seeit.kr/36 http://www.hoons.net/board/qacshap/con..

list, vector 배열의 크기를 아는 방법

list input[4]; 위와 같은 선언은 list arry를 4개 선언한 것이다.C로 치면 2차원 배열쯤으로 이해할 수 있다.하지만 이럴 경우 다른 함수에서 input 변수를 사용하고자 할 때, list array의 사이즈는 어떻게 구할까? 힘들게 배열의 크기를 알려고 하지말고list나 vector의 멤버를 list로 만들어서 사이즈를 확인해라. 그럼 굳이 사이즈 신경 안 써도된다. std::list > myListOfLists; // Linked list of linked listsstd::vector > myVectorOfLists; // Better, a vector is more like an arraystd::array this..

Clean Code 6장 정리

6. 객체와 자료구조 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스이다.아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다.클래스와 객체지향 기법 : 새로운 자료 타입 추가(핵심 알고리즘은 같으나 여러 종류의 타입 요구)절차적 코드와 자료구조 : 새로운 함수가 필요(기능적 추가)디미터 법칙1. 클래스 c2. f 가 생성한 객체3. f 인수로 넘어온 객체4. C 인스턴스 변수에 저장된 객체: 객체의 메소드가 리턴하는 메소드를 호출하지 마라.ex) final String outputdir = ctxt.getOptions().getScratchDir().getAbsolutePath();ctxt, options, ScratchDir이 객체를 리..

가변 크기의 구조체 요소(임의적으로 크기를 변경할 수 있는 구조체 요소)

일본 블로그에서 가져온 것입니다. 아래 글은 네이버 번역한 것이고요.. 정확하진 않아도 의미는 충분히 전달되네요.. 그럼 즐공~ + 구조체의 멤버에 가변장 배열(제1부 제 73장참조)를 넣는 일이 있다고 생각합니다.그러나, 그것을 파일에 보존하고 싶을 때, 처리가 조금 귀찮습니다.만약, 그 멤버 자체가 가변장이라면 간단합니다만.... 그럼, 이번 요점입니다. 구조체의 마지막 멤버를 배열로 해 두면, 그 구조체의 뒤에 있는 데이터를 취급할 수 있다. 의도적으로 크게 메모리를 확보해, 그 부분을 배열 멤버의 요소로 온다. 그럼, 말해 봅시다. 그런데, 파일의 정보를 구조체에 넣어 그것을 메모리상에 보존해 둔다고 합니다.간단 때문에, 정보는 패스명(파일의 위치명), 속성, 사이즈의 3개로 합니다.struct ..

Off-by-one error

어이가 없겠지만, 내가 저지른 off-by-one error(논리적인 에러..쯤으로 이해하자) 이다. sizeof(), memcpy(), memset() 함수는 언제나 꼼꼼히 신경써서 써야 할 것 이다. + void foo (char *s) { char buf[15]; memset(buf, 0, sizeof(buf)); strncat(buf, s, sizeof(buf)); // Final parameter should be: sizeof(buf)-1 return; } Off-by-one error From Wikipedia, the free encyclopedia Jump to: navigation, search An off-by-one error (OBOE) is a logical error invol..

Cfaq 16

Q 12.1 이 코드에서 잘못된 부분이 있나요? char c; while ((c = getchar()) != EOF) ... Answer 일단, getchar의 리턴 값을 저장하는 변수는 반드시 int이어야 합니다. getchar()는 어떠한 문자 값이나, EOF를 리턴할 수 있습니다. EOF는 int 타입이기 때문에 이 리턴 값을 char에 저장하는 것은 EOF를 잘못 해 석하게 할 소지가 있습니다 (특히 char의 타입이 unsigned인 경우 문제가 심각합니다). 위의 코드처럼 getchar()의 리턴값을 char에 담을 경우, 두 가지 결과를 예상할 수 있습니다. ² char의 타입이 signed인 경우, 그리고 EOF가 -1로 정의된 경우, 문자 값이 부호 확장(sign extension)되어,..

Cfaq 15

longlong 혹은 __int64를 사용하면 큰 숫자에 대한 연산을 할 수 있다. + Q 11.I 원하는 크기에 정확히 맞는 정수 타입을 쓰고 싶습니다. 새로운 C 표준에서 이러한 타입을 제공한다고 들었는데, 맞습니까? C99 표준에 따라, 또는 를 포함시킬 경우, 다 음과 같은 타입을 쓸 수 있습니다. 아래 표에서 N 은 8, 24와 같은 십진 수를 뜻합니다. 또한 두세번째 열에서 나온 최대/최소값을 위한 매크로는 를 포함하기 전, __STDC_LIMIT_MACROS를 정의해야 쓸 수 있 습니다. #define __STDC_LIMIT_MACROS #include 표준에 따라 정확히 말하면, int_16_t, int32_t등이 정의된 헤더 파일은 에 정의되어 있고, 는 를 포함하게 되며, 부가적인 사항..