[C++] 포인터 실습
Language/C++2022. 6. 5. 12:11[C++] 포인터 실습

Introduce Struct(구조체)를 이용해 포인터를 사용했을때와 사용하지 않았을때의 차이점을 살펴본다. [구조체 선언] #include using namespace std; struct Statinfo { int hp; // 4바이트 변수 3개 == 12바이트 짜리 구조체 int attack; int defence; }; [포인터를 사용하지 않은 경우] Statinfo CreatePlayer() { Statinfo ret; cout 생각보다 복잡하죠? [포인터를 사용한 경우] void CreateMonster(Statinfo *info) { cout attack = 10; info->defence = 2; } int main() { Statinfo monster; monster.hp = 0; mon..

[C++] 포인터
Language/C++2022. 6. 5. 11:22[C++] 포인터

Introduce 지금까지 했던 방식 int x = 1; - x라는 이름의 4byte 정수 타입의 바구니를 만들고, x라는 변수를 스택 메로리에 할당했다. 즉, x바구니에 1이라는 숫자를 넣으라는 의미 - 스택 메모리에 있는 특정 주소(x바구니)에 우리가 원하는 값을 넣는 셈. - x를 비유하자면 메모리에 이름을 붙인 것이다. - call by value에 의한 계속되는 복사의 문제 [원본을 직접 안건드리고 복사를 해서 건드린다.] [한계점] : 원본 수정이 필요할때 ... >> 포인터의 사용 포인터의 개념 - 바구니는 바구니인데 [주소]를 저장하는 바구니이다. - 변수를 선언할때 *가 등장했다. >> 주소 int *ip = &x; 근데.. 남의 주소를 갖고 뭘 할까 ? - [주소를 저장하는 바구니]가 ..

[1] C review < 동적메모리 할당 >
Language/자료구조2021. 11. 15. 19:49[1] C review < 동적메모리 할당 >

변수를 선언하는 대신 프로그램의 요청으로 메모리를 할당할 수 있다. 이것을 동적 메모리 할당이라고 부릅니다. malloc 함수를 호출하여 동적메모리할당을 요청하면 요구하는 크기의 메모리를 할당하고 그 시작 주소를 반환합니다. malloc함수의 리턴값이 주소값이므로 당연히 포인터 변수를 사용해야 합니다. 동적으로 할당된 배열은 공간이 부족할 경우 더 큰 배열을 할당하여 사용할 수 있습니다. 엄밀히 말하면 배열의 크기를 확장할 수 없습니다. 더큰 배열을 새롭게 만들어서 대체하는 방식으로 접근해야 합니다. 배열의 확장을 코드로 살펴봅시다. #include #include int main(void) { int* array = (int*)malloc(4 * sizeof(int)); array[0] = 1; arr..

[0] C review  < 포인터,배열,포인터 연산 >
Language/자료구조2021. 11. 15. 17:34[0] C review < 포인터,배열,포인터 연산 >

C언어를 리뷰하기전 다음 3가지를 알면 c언어를 이해하는데 큰 도움이 됩니다. - 컴퓨터의 메모리는 데이터를 보관하는 장소 - 바이트(8bits)단위로 주소가 지정됨 - 모든 변수는 주소를 가짐 예를들어 정수는 4바이트를 할당되고, 메모리의 4바이트 공간에 sum변수가 할당됩니다. 이때 가장 앞의 번지가 그 변수의 주소가 됩니다. 포인터는 메모리 주소를 값으로 가지는 변수이고, 포인터 변수는 다음과 같이 선언됩니다. type-name * variable-name variable-name은 선언된 포인터 변수의 이름이며, *는 variable-name이 포인터 변수임을 표시하고, type-name은 포인터 변수 variable-name에 저장될 주소에 저장될 데이터의 유형을 지정합니다. ex) int * ..

image