본문 바로가기

Computer/Language - C/C++

C++ 바닥부터 시작하기(3) - 함수의 선언과 프로토타입 엄청 매우 오랜만에 블로그에 들어왔는데, 왠지 별 쓸모없어보이는 내 블로그에 hit수가 생각보다 높아, 뭔가 써보고싶어졌다. 머릿말은 이쯤하고, 함수의 선언과 프로토타입에 대해 알아보자. 함수는 사용되기 전(call 되기 전)에 반드시 선언이 되어있어야 한다. 그렇지 않으면 컴파일러님께서 "너 왜 없는 함수를 불러대냐? 디버그 먹엉 두 번 먹엉"를 외치신다. int main(){hello(); // 그래서 hello는 어디에??return 0;} 그래서 함수를 선언해주었다. int main(){hello(); return 0;} void hello(){printf("hello world\n");} 근데 또 안된다!!!!!!는 당연히 우리의 잘못이다. 컴파일러님은 언제나 옳으시다.자 위에 써놓은 말을 다시.. 더보기
C++ 바닥부터 시작하기(2) - 변수의 선언과 초기화 1. 기초 변수의 종류 C나 JAVA와 마찬가지로 C++에는 몇 가지 변수형들이 존재한다. 그리고 대부분은 위의 언어들과 특성을 공유한다. char short int long float double long double bool wchar_t string 마지막 세 개를 빼고는 익숙한 것들이다. bool의 경우, C에서는 존재하지 않았으나 C++에서 등장! wchar_t는 1 wide character를 쓰기 위함이라는데 전각문자를 표시하기 위함이 아닐까 추측해본다. 마지막으로 string!은 C에서 포인터나 배열로 문자열을 표현하던 것을 쉽게해준다. (다만 string을 include 해야 한다) 2. 변수의 선언 역시나 C/JAVA와 마찬가지 형태인 변수타입 변수이름 을 따른다. int a; long.. 더보기
C++ 바닥부터 시작하기(1) - Hello World 나는 JAVA 와 C 밖에 수업을 듣지 않았기 때문에(그마저도 잘 한다고 말할 수는 없지만..) C++에 대한 지식이 거의 없다. 굉장히 추상적으로 수박 겉핥기 정도로만 알고 있는 이 C++을 바닥부터 차근차근 배워보고자 한다. 어떠한 프로그래밍 언어를 선택하더라도 만국공통 example인 Hello World 를 피해갈 순 없지! 자 그럼 C++로 Hello World 를 출력해보자. #include using namespace std; int main(){ cout 더보기
case 문에서는 변수 선언이 안된다?! DB 숙제를 하다 보니 내가 보기에는 전혀 애러가 없는 부분이었는데 컴파일러가 애러를 띄우는 부분이 있었다. case 'c' : int a=...; char *name = ...; break; 전혀 이상할 것이 없는데?..... 모르는 것이 있을 땐, 도와줘요 구느님! 구느님 가라사대, case 문에서는 local variable 의 범위가 지정되지 않았기 때문에 저렇게 변수를 선언하면 오류가 난다. 괄호를 넣거라! case 'c' : { int a=...; char *name = ...; break; } 이렇게 코드를 고치니 잘 돌아간다! 결론 : case 문에서 변수를 선언할 땐 괄호가 필요하다. 더보기
Type modifiers - const & volatile C에는 변수의 접근 및 수정을 통제하는 두 가지 키워드가 있는데 const 와 volatile 이다. (1) const 의 경우 처음 선언 시에 설정된 값을 프로그램 실행 내내 유지하며, 변경할 수 없게된다. 문자열의 길이를 구하는 함수인 strlen 의 원형을 보면 size_t strlen(const char *str) 인데 이는 "이 함수는 string 을 변경하지 않겠다"는 의미도 내포하고 있는것이다. (2) volatile 의 경우 단어의 뜻처럼 변덕이 심한 변수들을 선언할 때 쓴다. 다음의 예를 보자. void func(){ int x = 10; x = 20; x = 30; } int형 변수 x는 10, 20, 30 으로 값이 변화하는데 이를 컴파일하게 되면 자동 최적화에 따라(컴파일러에 따라 .. 더보기