[C언어] 포인터, 동적할당

Park Sunjoo·2022년 5월 12일

C언어_스터디

목록 보기
3/4

포인터 기본

포인터란?
주소값을 저장하는 변수

ex)

int a = 10;
int *p = &a;

a를 간접참조 하고 있음.
a == *p
&a == p

포인터의 크기

char *pChar;
printf("%d\n", sizeof(pChar));
printf("%d\n", sizeof(*pChar));

sizeof(pChar) == 8
sizeof(*pChar) == 1

64비트로 컴파일하는 경우,
포인터 변수는 변수타입과 상관없이 8byte이다.


동적할당

프로그램 실행 중 메모리를 새로 할당 받는 것을 말함!

malloc()함수를 사용 (stdlib.h에 있음)
리턴타입은 void*

사용방법~

ex) 사이즈가 10개인 int타입의 배열을 동적할 당 해보자.

  1. int타입의 10개 사이즈 지정
    sizeof(int)*10)

  2. int타입의 10개 사이즈 할당
    malloc(sizeof(int)*10)

  3. 포인터에 할당
    int *my = malloc(sizeof(int)*10)
    (내가 할당하고자 하는 타입과 pointer변수타입은 같아야함.)

  4. 포인터변수 타입에 맞게 형변환
    int my = (int*)malloc(sizeof(int)10)

동적할당변수 선언 문제

다음 변수가 들어갈 만큼의 변수를 동적할당 하자~

char param[20] = {"cos pro"}
  1. "cos pro" 글자만큼 사이즈 지정.
    sizeof(char)*strlen(param)
  2. char타입의 동적변수 할당
    malloc(sizeof(char)*strlen(param))   //strlen은 string.h에 있음
  3. 포인터에 할당
    char *ch1 = malloc(sizeof(char)*strlen(param))
  4. 포인터변수 타입에 맞게 형변환
    char *ch1 = (char*)malloc(sizeof(char*strlen(param))
profile
개발, 디자인에 관심있는 문어발

0개의 댓글