@ 16. 1 ~ 17. 1/C++
-
배열(1)@ 16. 1 ~ 17. 1/C++ 2013. 1. 29. 23:24
배열의 이름은 연속적인 배열 메모리의 시작주소를 나타낸다. 즉.. char arr[5] = {0,}; 여기서 arr과 &arr[0]은 같다 이거지.. 즉..arr가 1차원 char주소로 사용된다는 것인데.. 그러므로 *arr은 arr[0]을 나타낸다.. *arr == arr[0] *(arr+1) == arr[1] 다차원 배열 arr1[6] arr2[2][2] 시작주소는 첫번째 배열요소는 arr1[0] arr2[0][0] 차이가 있긴있다. arr2 2차원 배열의 대표주소, arr2[0] 0행의 대표주소 arr2[1]은 1행의 대표주소를 의미.. arr2 == *arr2 == arr2[0] **arr2 == arr[0][0] arr2+1 == *(arr2+1) == arr2[1] **(arr2+1) == a..
-
포인터(1)@ 16. 1 ~ 17. 1/C++ 2013. 1. 29. 22:08
1 메모리의 주소 1개는 1byte의 메모리 공간을 갖는다 2 변수는 자료를 저장할 수 있는 메모리 공간의 이름 3 자료형의 크기에 따라 변수가 사용할 메모리 공간의 크기 결정..char int 등.. 4 변수의 시작 주소는 &연산자를 변수 앞에 붙여 사용 # 5 변수의 시작주소는 그 변수의 자료형의 주소를 의미 6 *연산자를 주소앞에 붙이면 메모리 이름으로 사용할 수 있다. 즉..int형 변수 n이 있다면 &n은 int형 주소이고.. *&n은 n과 같다.. 포인터란 주소를 저장하기 위한 메모리 공간이다. 주소를 저장하는 변수 포인터 포인터 변수의 선언은 *를 붙여 선언한다. char *cp는 char형 주소를 저장하는 변수 cp를 의미 포인터 변수의 크기는 항상 4byte다 *은 주소앞에 사용하..
-
Template (3) 클래스 템플릿 특수화@ 16. 1 ~ 17. 1/C++ 2013. 1. 29. 20:40
특수화하는 이유는?? 특정 자료형에 대해서 구분이 되는 다른 행동을 보이기 위해서.. typename 이런식으로.. 다음과 같은 정의된 클래스 템플릿.. template class Point { private: T xpos, ypos; public: Point(int x=0, int y=0) : xpos(x), ypos(y) {} void ShowPosition() const; }; 이런식으로..특수화를 해준다.. template class Point { private: char *string; public: void ShowData(char *str) { string = new char[strlen(str)+1]; strcpy(string,str); cout
-
비트연산자, 함수포인터, ctime@ 16. 1 ~ 17. 1/C++ 2013. 1. 27. 02:02
비트연산자 이항연산자를 이용하여(변수에 대입한 정수도 가능하다.) 하면된다. 반드시 정수여야 한다. 실수는 안된다! 예) int num1 = 2 // 0000 0000 0000 0010 int num2 = 6 // 0000 0000 0000 0110 이렇게 있으면 비트연산자를 이용하여 & 이것은..곱하기로 생각하면된다 ! 난 쉽게 이해하려 ...없다 그냥 곱하기로 이해했다..ㅠ 0000 0000 0000 0010 & 0000 0000 0000 0110 ---------------------- 0000 0000 0000 0010 이렇게 된다는 것! | 이것은 음..더하기의 + 세로 모양하고 같아서 이걸보면 더하는거야..라고 이해함..:) 좀 더 쉽게 이해되었음 근데 1+1 도 1이라는거..; 0000 00..
-
잊기전 정리..@ 16. 1 ~ 17. 1/C++ 2013. 1. 17. 00:32
int *ptr = new int[10]; 일경우.. delete [] ptr;로 해제를 해주고.. 쉽게 설명하자면.. ptr이가리킬수 있는게 10개 ..배열로 되어있으니.. 배열 delete인.. delete [] ptr로 선언.. int *ptr[3] = new int; 일경우.. delete ptr[i]; 식으로 하고.. ptr이 3개가 되는데..가리키는건 int하나씩.. 그래서 delete ptr[i]하나씩..죽여준다.. int **ptr[3] = new int*[3]; ptr[0]=new int[3]; ptr[1]=new int[3]; ptr[2]=new int[3]; 일경우.. delete [] ptr[0]; delete [] ptr[1]; delete [] ptr[2]; 식으로 하고... 마..
-
파일 입출력 관련@ 16. 1 ~ 17. 1/C++ 2013. 1. 13. 17:28
파일형태에는 텍스트 파일과 이진형태 파일이 있는데.. 공통점은 0, 1이라는 데이터를 쓴다는것.. 차이점은.. 텍스트 파일은 그것들을 1바이트 단위로 읽고 이진형태는 사용자가 지정한 단위로 읽어들인다. ifstream myfile() ifstream *myfile; myfile->open() - 파일에 쓴다 binary 파일로 데이터를 저장할때.. ofstream myfile; myfile.write(첫번째 시작주소 인자, 최종크기); 첫번째 시작주소 인자는 char *형으로 형변환을 해줘야한다. basic_ostream& write(const char_type *_Str,streamsize _Count); - 파일에 써있는것을 읽어온다 연산자는 읽을 때 공백을 기준으로 데이터를 구분하여 읽어 들이며 문..