본문 바로가기

이벤트

[C 프로그래밍] 메타코드 강의 후기_(챕터 7 : 포인터)

https://mcode.co.kr/

 

메타코드M

빅데이터 , AI 강의 플랫폼 & IT 현직자 모임 플랫폼ㅣ메타코드 커뮤니티 일원이 되시기 바랍니다.

mcode.co.kr

메타코드에서 강의를 제공받고 후기를 작성합니다.

 

C언어에서 포인터는 프로그래밍의 핵심 개념 중 하나로, 데이터가 저장된 메모리의 주소를 저장하는 변수입니다. 포인터를 이해하고 활용하는 것은 C언어 프로그래밍의 효율성과 유연성을 크게 향상시킬 수 있습니다.

 

포인터의 기본 개념

  • 정의: 포인터는 메모리 주소를 저장하는 변수로, 변수나 함수의 메모리 위치를 가리키는 데 사용됩니다. 
  • 역참조: 포인터가 가리키는 메모리 주소에 저장된 값을 접근하거나 변경하기 위해 역참조(dereferencing) 연산자 *를 사용합니다.

포인터의 크기

  • 일반적인 크기: 포인터의 크기는 시스템이 32비트인지 64비트인지에 따라 달라집니다. 32비트 시스템에서는 대부분 4바이트(32비트), 64비트 시스템에서는 8바이트(64비트)입니다. 1 2
  • 크기의 의미: 포인터의 크기는 해당 포인터가 가리킬 수 있는 메모리 주소의 범위를 결정합니다. 즉, 더 큰 크기의 포인터는 더 넓은 메모리 주소 공간을 가리킬 수 있습니다.

NULL 포인터

  • 정의: NULL 포인터는 아무것도 가리키지 않는 포인터를 의미합니다. 즉, 포인터가 유효한 메모리 주소를 가리키고 있지 않음을 나타냅니다. 3
  • 사용 이유:
    • 오류 방지: 포인터를 사용하기 전에 NULL로 초기화해두면, 실수로 초기화되지 않은 포인터를 사용하는 오류를 방지할 수 있습니다.
    • 조건 검사: 포인터가 유효한 대상을 가리키고 있는지 확인하기 위해, 포인터가 NULL인지 아닌지를 검사하는 것은 일반적인 프로그래밍 패턴 중 하나입니다.

C언어에서 포인터 연산자, 참조 연산자, 주소 연산자는 메모리 주소와 관련된 중요한 연산자들입니다. 이들은 변수의 메모리 주소를 다루거나, 해당 주소에 저장된 값을 접근하는 데 사용됩니다.

 

C언어에서 포인터와 관련된 연산자들은 메모리 주소를 직접 다루고, 해당 주소에 저장된 데이터에 접근하는 데 필수적인 요소입니다. 

 

C언어에서 포인터는 메모리 주소를 저장하는 변수입니다. 이를 통해 프로그래머는 메모리의 특정 위치를 직접 참조하고 조작할 수 있습니다. 포인터와 메모리 공간의 관계를 이해하는 것은 C언어 프로그래밍의 핵심 중 하나입니다.

  • 메모리 주소: 컴퓨터의 메모리는 많은 셀로 구성되어 있으며, 각 셀은 고유한 주소를 가집니다. 포인터는 이러한 메모리 셀의 주소를 저장함으로써, 해당 메모리 위치에 접근할 수 있게 해줍니다

 

이중포인터는 포인터의 포인터로, 포인터 변수의 주소를 저장하는 포인터입니다. 이중포인터는 주로 다차원 배열, 동적 메모리 할당된 배열의 배열, 포인터 배열 등을 다룰 때 사용됩니다. 이중포인터를 이해하기 위해서는 먼저 포인터에 대한 기본적인 이해가 필요합니다.

이중포인터란?

  • 정의: 이중포인터는 포인터의 주소를 저장하는 포인터입니다. 즉, 포인터 변수를 가리키는 포인터입니다.
  • 표현: C언어에서 이중포인터는 **를 사용하여 표현합니다. 예를 들어, int **ptr;는 정수형 포인터를 가리키는 포인터 변수 ptr을 선언합니다.

C언어에서 표준 입력은 사용자로부터 데이터를 입력받는 방법 중 하나이며, 포인터는 메모리 주소를 저장하는 변수입니다. 이 두 개념은 C언어 프로그래밍에서 매우 중요하며, 다양한 프로그램을 작성할 때 자주 사용됩니다.

표준 입력이란?

  • 정의: 표준 입력(stdin)은 사용자로부터 데이터를 입력받는 표준적인 방법입니다. 보통 키보드 입력을 의미합니다.
  • 사용 방법: scanf, gets, fgets 등의 함수를 사용하여 표준 입력으로부터 데이터를 받을 수 있습니다.

배열과 포인터의 관계

  • 배열 이름은 포인터: C언어에서 배열 이름은 배열의 첫 번째 요소를 가리키는 포인터로 사용됩니다. 예를 들어, arr 배열이 있을 때, arr은 &arr[0]과 동일한 주소 값을 가집니다.
  • 포인터 연산과 배열 접근: 포인터를 사용하여 배열의 요소에 접근할 수 있습니다. 예를 들어, *(arr + 1)은 arr[1]과 동일한 값을 가리킵니다. 이는 포인터 연산을 통해 배열의 요소에 접근하는 방법입니다.