' 'C' 태그의 글 목록
728x90
728x90

C 7

[C/C++] 10. 포인터 (1)

(1) C와 포인터 포인터란, C가 그 진가를 발휘하는 문법이다. C의 가장 큰 특징이자 장점이자 단점은 어셈블리 제외 고급 언어들 중 가장 기계어와 가깝다는 것인데 이는 이론 상 프로그램의 거의 모든 것을 제어할 수 있다는 말이 된다. 다시 말해 개발자에게 주어지는 자유도가 높다는 것인데 개발자에게 자유를 준다는 것은, 곧 (언어, 컴파일러 차원에서) 알아서 해준다는 게 없다는 뜻이다. 이것이 주니어 개발자일수록 단점으로 작용할 수도 있지만 그만큼 low-level에서 필요한 기초 지식들을 익힌다는 것이기 때문에 그런 것들을 자동으로 해주는 라이브러리나, 상위 고급 언어들을 사용할 때 보다 쉽게 익힐 수 있게 된다. (2) 포인터란 본격적으로 포인터에 대해 설명한다. 포인터는 영어로 쓰면 Pointer..

Programming/C & C++ 2022.03.24

[C/C++] 9.5강 - for, while에서 break, continue

(1) break switch에서는 break;를 했을 때 해당 case에서 탈출했다. 같은 원리로 while과 for에서 break를 쓰면 해당 반복 루프를 탈출하여 다음 코드를 실행한다. 아주 단적인 예제를 보자. #include int main() { int i = 0; while (1) { printf("%d, ", i++); if (i % 10 == 0) printf("\n"); if (i > 100) break; } } 1~100까지의 수를 출력하는 코드이다. 물론 for를 써도 되지만 break를 써먹기 위해 while을 사용하였다. i가 100보다 커질 때까지 무한 루프를 돌다가 101이 됐을 때 break; 하여 while 루프를 빠져나온다. 물론 for에서도 break;를 사용할 수 있..

Programming/C & C++ 2022.01.17

[C/C++] 9.4강 - switch & break | 제어문, 조건 관리하기

(1) switch switch. 전기 스위치 할 때 그 스위치로 이해해도 될 것 같다. 사실 if가 switch를 완벽히 대체할 수는 있지만 일부 상황에서는 switch가 코드도 짧아지고 가독성이 올라가는 경우가 있기 때문에 알아두면 좋다. (2) if를 사용했을 때 사람의 행동에 대해서 확인하는 예제이다. 지난 포스팅에 쓴 enum도 사용하였다. #include enum Actions { SitDown, StandUp, LayDown }; int main() { enum Actions action = StandUp; if (action == SitDown) { printf("앉았습니다\n"); } else if (action == StandUp) { printf("일어섰습니다\n"); } else i..

Programming/C & C++ 2022.01.15

윈도우에서 GCC/G++ 설치하기!!

(0) 여담 C나 C++로 프로그램을 개발할 때 Visual Studio를 사용하지 못하는 리눅스 환경에서는 gcc나 clang이라는 컴파일러를 쓰곤 한다. 포스팅의 주제인 GCC에 대해 잠깐 얘기를 하자면 GCC의 의미는 GNU Compiler Collection, 오픈 소스컴파일러 모음이다. 본디 GCC는 C언어만을 위한 컴파일러여서 GNU C Compiler 였지만 다른 언어들도 지원하게 되면서 이름을 바꾸게 되었다. 윈도우에서 GCC를 설치하려면 MinGW라는 프로그램 필요하다. MinGW는 GNU용 소프트웨어 도구 모음인데 윈도우용으로 포팅한 버전이라고 한다. (1) MinGW 설치 https://sourceforge.net/projects/mingw/ MinGW - Minimalist GNU ..

Programming 2021.09.06

[C/C++] 백준 1152번 C++ 풀이

이 문제는 입력받은 문자열의 단어의 개수를 구하는 문제이다. 문제를 풀기 위해서 해결해야 하는 과제는 두 가지가 있다. 1. 공백도 문자열에 포함해서 입력받기 2. 공백을 제외한 다른 알파벳들의 묶음(단어의 개수) 수 세기 이게 필자의 제출 기록인데 보다시피 실패가 아주 많다..ㅋㅋ 문자열을 그냥 입력받으면 공백으로도 구분된다는 것과 문자열 앞뒤로 공백이 나올 수 있다는 조건을 간과하여 5번이나 틀렸다. 결국 못참고 정답을 찾아봤는데.. ▼구글에서 찾은 정답 보기 #include #include int main() { std::string str; int count = 0; while (std::cin >> str) { ++count; } std::cout = 0 && x - 65 = 0 && x - 97

Programming/C & C++ 2021.09.01

[C/C++] 백준 1157번 C++ 풀이

백준 문제 1157번 C++풀이이다. 아래 코드는 정답이었지만 너무 길고 복잡한 것 같아서 고수들의 코드를 확인해보려고 했는데.. 소름돋게 똑같은 알고리즘을 써서;; 내가 맞게 잘 한 거구나.. 라는 생각과 함께 여러 풀이들이 변수이름까지 똑같은 걸 보고 다들 정답을 보고 하는 구나;; 라는 생각을 하며.. 힌트와 답을 공유한다. #include #include int main() { std::string str;//문자열 std::cin >> str;//문자열 입력 int count[26] = { 0 };//카운트 for (int i = 0, idx = 0; i < str.length(); i++) { idx = str[i]; if (idx < 97)//대문자면 65를 빼고 idx -= 65; else..

Programming/C & C++ 2021.08.30

[C/C++] Win32 API 첫 예제!

윈도우 API는 윈도우os에서 제공하는 API이다. soen.kr에서 무료로 제공되는 초급 강좌를 정독하며 공부한 내용들을 올릴 것이다. 이 포스팅 시리즈는 '공부 정리'이므로 제3자는 볼 필요없다. 계속 명시하겠지만 웬만해선 모든 출처는 대부분 soen.kr일 것이다. github.com/mdisprgm/Win-API 에 소스가 보관된다. (1) Hello, World! with GUI 콘솔 앱은 Hello World가 가독성을 위해 줄바꿈을 마구마구 해도 10줄내로 끝났지만 윈도우 API는 다르다.. 기본적으로 설정해줄 게 굉장히 많더라. #include //헤더파일 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//실제 작업, 프로시저 HINSTANC..

Programming/C & C++ 2021.08.24
728x90
728x90

'