Learn business/C++

    [C++]포인터와 배열3

    • 포인터와 배열에 대한 마지막 글이 될 것 같다.• 이번 포스트에서는 필자가 포인터와 배열의 공부하면서 가장 헷갈리고 애매했던 것에 대해 이야기하려고 한다.[char a[]와 char *a 차이]• 결론부터 말씀드리자면, char a[]와 char *a는 전혀 다르다.• 차이점은 - 배열: 같은 타입의 연속적인 요소들이 미리 할당된 공간, 크기와 위치가 고정되어 있다. - 포인터: 할당된 메모리 공간을 가리킬 수 있으며, 변경할 수도 있다. 또한 배열을 가리킬 수 있으며, 동적으로 할당한 배열처럼 흉내내어 쓸 수 있다. • 아마 헷갈리는 이유는 함수의 Formal Parameter에 관한 것이라 생각한다.(cf. void func(char * a); 라는 함수를 호출할 때 char a[]; func(a..

    [C++]포인터와 배열2

    [포인터 배열] • 배열을 가리키는 포인터를 뜻한다. 그럼 초기화 방법을 보도록 하자. #include using namespace std; int main(void) { int arr[3]; int *p; p = arr; // 배열의 이름은 배열의 시작주소를 나타내는 상수 값 cout ※ int a[2][3][4] - int형 배열 메모리(int [3][4])가 2개 있는 3차원 배열을 뜻함 - 각 요소가 int[3][4]형 이므로 int [3][4]를 가리키는 포인터(int (*p)[3][4])를 선언한다. [예시 2] #include using namespace std; int main(void) { int a[2][3] = { 1, 2, 3, 4, 5, 6 }; int(*p)[3] = a; for..

    [C++]포인터와 배열1

    • 필자는 크게 포인터와 배열의 관계에서 크게 “포인터 배열”과 “배열 포인터”가 있다고 생각한다.• 참고로 필자는 “포인터 배열”과 “배열 포인터”에 대해 용어가 혼동이 왔었는데 아래와 같이 화살표를 그려서 혼동을 해결했다. 필요한 사람만 참고했으면 좋겠다. - 포인터 배열 : 포인터→배열 – 포인터는 배열을 가리킴! - 배열 포인터 : 배열→포인터 – 배열은 포인터다! [포인터와 배열 사이의 기본적인 관계 이해] • 우선 배열의 이름이 갖는 의미부터 명확하게 집고 넘어가야 한다.• n차원 배열의 이름은 배열의 선두번지 주소를 대표한다.• 배열의 이름은 상수인 것이다!• 아래 예시는 기본적인 것이니 답을 보지 말고 출력을 예상해보자. #include using namespace std; int main..

    [C++]포인터

    [포인터 개념] • 변수의 주소나 배열의 이름을 포인터의 값으로 가진다. • 주 메모리상의 여러 형태의 주소를 값으로 취한다. • 포인터가 1byte char형을 가리키던 8byte double형을 가리키던 가리켜야 할 주소는 모두 4byte(32bit)이다. [주소 개념 이해] • 변수 앞에 &를 붙일 경우 변수의 주소를 말한다. • ‘&’를 주소 연산자라고 한다. • 주소는 컴파일러에 의해 결정된다. [포인터 초기화 방법] //방법 1 int a = 26; int *pa; pa = &a; //방법 2 int b = 26; int *pb = &b; [예시1] int a = 7; int *p = &a a 표현출력 값설명p 표현a7a 변수의 값*p==*(0x789)&a0x789a 변수의 주소p*&a7a 변..

    [C++]new & delete

    malloc & free를 대신하는 new & delete 먼저 C언어의 malloc & free를 이용한 동적할당을 아래 코드로 살펴보자. #include #include #include #pragma warning(disable: 4996) using namespace std; char * MakeStrAdr(int len) { char * str = (char *)malloc(sizeof(char) * len); return str; } int main(void) { char * str = MakeStrAdr(20); strcpy(str, "I am so happy~"); cout