목록C++ (12)
(수근수근)
C에서 포인터의 역할이 많은 문제를 가지고왔고, 자바는 이런 포인터의 역할을 제한한 언어이다. C++ 포인터의 역할을 좀 더 안전하게 사용하기 위해 참조를 제공하고 있다. 참조의 종류 값에 의한 호출 참조에 의한 호출 포인터 값에 의한 호출 void swap(int argNum1, int argNum2) { int temp = argNum1; argNum1 = argNum2; argNum2 = temp; } int main{ int num1 = 28; int num2 = 37; swap(num1, num2); } 1) main함수에 변수인 num1(1111), num2(1112) 는 메모리에 쌓인다. (괄호가 메모리주소) 2) swap함수 불리면 argNum1(2223), argNum2(2224)에 새로..
UpdateData(TRUE); 컨트롤의 값을 변수로 전송 // 기본 값 MFC변수는 값을 변경했다고 알아서 갱신되지 않는다. UpdateData(FALSE); 변수의 값을 컨트롤로 전송 CFILEDialog dlg(...) CFILEDialog dlg( TRUE(읽기)/FALSE(저장), 기본확장자, 기본파일명, 열기모드=>MSDN참고, 파일창 아래쪽 필터링 ) MFC는 변수를 처음에 초기화 다 해주어여한다. 생성자 함수에서 BEGIN_MESSAGE_MAP 클래스 마법사가 만들어주는 부분, 매시지 맵이 추가 되는 동시에 CPP파일에 함수가 생성된다 OnInitialUpdate : 윈도우 다이얼로그가 생성하면서 불리는 가상함수 일반적인 view의 초기화는 이 약;사 해주는 게 맞다! CWnd* GetDl..
솔루션에서 config.ini 파일을 읽어서 데이터를 가지고 오는데, 그 부분을 해봐야겠다는 생각이 들어서 짧게나마 공부하고, 실행해보았다. 이걸 불러서 변경하는 부분을 다음에 스스로 토이프로젝트로 진행해보아야겠당 INI 파일이란? ini파일 포맷은 설정파일에 대한 표준이다. 프로그램이 실행될 때 필요한 초기정보를 담은 파일 파일의 형식을 본다면 [section] key = value .... 의 형태로 되어있다. 파일 쓰기 BOOL WritePrivateProfileString( LPCSTR lpAppName, // 섹션 (Section) 이름 LPCSTR lpKeyName, // 키 (Key) 이름 LPCSTR lpString, // 값 (Value) LPCSTR lpFileName // 저장할 in..
자바만 배운 내가 C++을 처음 접했을때 다들 포인터개념만 더 하면된다고 했다. (음 물론 아니다... ㅋㅋㅋ) 포인터란? 메모리에 있는 데이터의 주소 포인터를 사용하는 이유 데이터 전체를 복사하는 대신, 포인터를 전달해도 되기 떄문, 두코드가 각각의 사본이 아니라 하나의 원본 데이터에서 작업하고 싶기 때문 우리가 무언가 정보를 줄 때도 엄청나게 많은 데이터가있는 사이트를 url만 보내주는 것처럼 포인트도 주소를 제공하여 원하는 정보를 그 곳에서 찾을 수 있게 한다. 메모리에 대해서 메모리를 알아야 포인터가 무엇인지 알 수 있다! 우리가 코드에서 변수를 정의하면 보통 컴퓨터는 메모리에 저장한다고 흔히 말한다. main()함수는 컴퓨터의 stack이라고 불리는 메모리영역에 저장한다. 함수 밖에서 정의하면 ..
C++프로그램 소스를 보니까 결국에는 C와 상관성이 높아서 결국에는 C 책을 봐야한다는 생각이 들었다.. 작고빠른 C언어 작동방식 1) 소스코드작성 2) 컴파일러(gcc)를 실행해 에러가 없으면 소스 컴파일 3) 윈도우의 경우 exe파일이 생성되어 컴퓨터가 이해할 수 있는 언어로 변경 main함수 컴퓨터는 실행시 main함수를 실행 반환값이 int형인데 0을 반환하면 프로그램이 제대로 실행된 것임 아닌경우 에러
define : #define은 특정 값에 이름을 붙이거나 코드를 조합하여 함수형태로 만들 수 있다. - 매크로를 이용하면 전처리기를 거쳐 소스가 일괄 변환된다. - 조건부 컴파일 : #ifdef 메크로 코드 #endif //매크로가 정의되어있을 떄 컴파일 - 조건부 컴파일에는 여러가지 조건에 따라 컴파일 여부를 결정할 수 있다. [C++은 define 대신 const / enum / inline을 권장한다.] 예를들어 #define pi 3.241529 코드가 있다고 가정해보자! 우리에게 pi(기호식이름)가 눈에 보이지만 컴파일러에겐 보이지 않는다. 선행처리자가 컴파일에 넘어가기전에 숫자 상수로 바꾸어 버리기 때문이다. [해결발법!] const double pi = 3.141592 장점! : 컴파일도 ..