brunch

You can make anything
by writing

C.S.Lewis

by 내가 사는 세상 Dec 07. 2023

기초개념 - 자료형

값형, 참조형(포인터형), 포인터

목차

1. '자료형'이란?

2. 자료형 : 값형 vs 참조형(포인터형)

3. 참조형(포인터형) 자세히 살펴보기 #'포인터'란?

  3.1. 파이썬의 모든 자료형은 참조형

4. 나만의 자료형 : 구조체




1. '자료형'이란?


프로그래밍 언어에는 자료형이라는게 있다. 어떤 데이터를 저장할 때, 이것이 어떤 형태의 데이터 자료인지 같이 선언해주는 것이다. 예를 들어


int num = 10;

float pi = 3.14;


 다음과 같이 코드가 쓰여 있다면, 컴퓨터 보고 num이라는 메모리 공간에 들어있는 10이 '정수'임을, pi라는 메모리 공간에 들어있는 3.14.가 '실수'임을 나타낸다. 이는 구체적으로 컴퓨터가 0과 1로 구성된 메모리를 몇칸 읽어서 해석할지를 알려줌으로써 데이터를 정확히 파악할 수 있게 한다. 예를 들어 1001을

1칸씩 읽으면 1(= 1 X 2^0), 0(= 0 X 2^0), 0(= 0 X 2^0), 1(= 1 X 2^0)

2칸씩 읽으면 2(= 1X2^1 + 0X2^0), 

4칸씩 읽으면 9(= 1X2^3 + 1X2^0)

으로 각각 다르게 해석하는 것처럼 말이다.


 일반적으로 자료형에 따라

int : 4byte

float : 4byte

double : 8byte

만큼 메모리를 읽도록 되어있다.




2. 자료형 : 값형 vs 참조형(포인터형)


 자료형은 숫자만 있는 것이 아니다. 문자열도 표현하고, 구조체도 표현하고, 개체도 표현가능하다. 이러한 자료형은 값형과 참조형(포인터형)으로 구분된다. 



값형은 데이터를 복사한 것이다. 기본 자료형은 값형이다.

참조형(포인터형)은 원본을 가리키고(참조하고) 있다.




3. 참조형(포인터형) 자세히 살펴보기 #'포인터'란?


 포인터는 메모리 주소를 저장하는 변수이다. int*는 int 옆에 *을 붙임으로서 해당 변수가 '포인터'형임을, 즉 해당 변수에 주소값(4byte)이 담겨있음을 나타낸다. 컴퓨터에게 해당 메모리로 가서 4byte를 덩어리로 해석하면 그 값이 주소값이라고 알려준다는 것이다.


  해당 변수의 주소값을 나타내기 위해 &을 붙인다. 그래서 'num이라는 변수의 주소값'을 나타낼 땐 &num으로 표현하는 것이다.


 이를 활용할 땐 *포인터를 하면 된다. *ptr은 'ptr이라는 포인터 변수'가 가르키는 것의 값(10)이다.

printf("%d\n", *ptr); // 출력값 : 10



내친김에 이중포인터도 살펴보자.

3.1. 파이썬의 모든 자료형은 참조형(포인터형)


 파이썬이 모든 것을 개체로 처리한다. 아래에서 확인가능하듯이, 정수, 실수, 리스트, 튜플, 함수 전부 class로 구현해낸다. 그래서 파이썬은 변수 앞에 자료형을 선언하지 않는다. 또한 변수의 자료형은 실행 시간에 동적으로 결정된다. 







4. 나만의 자료형 : 구조체


서로 관련이 높은 데이터들을 덩어리로 묶어 나만의 자료형을 만들 수도 있다.


C언어

#include <stdio.h>


struct Student {

    char name[50];

    int age;


};


int main() {


    struct Student student1 = {"홍길동", 20};

    struct Student *ptr_student = &student1;


    printf("이름: %s\n", ptr_student->name);

    printf("나이: %d\n", student1.age);

    return 0;

}


prt_student->name 은

(*ptr_student).name 과 같다.




매거진의 이전글 데이터베이스 - SQL 기초
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari