💻Computer Science/📕개발 언어 (Language)

[C][Ch.4] C언어 기초3

Written by Donghak Park

C언어 기초3

배열

배열이란 ?

배열은 같은 타입의 변수들로 이루어진 유합 집합이다. 배열을 구성하는 각각의 값을 배열 요소 (element)라고 하며, 이러한 요소의 위치를 가르키는 숫자를 인덱스(index)라고 합니다. C언어에서는 인덱스는 0부터 시작합니다. 이러한 배열은 1차원, 2차원, 다차원으로 활용이 가능합니다.

//1차원 배열 선언
int num[3];

//1차원 배열 초기화
num[0] = 0;
num[1] = 1;
num[2] = 2;

// 선언과 동시에 초기화
int num[3] = {1,2,3};

// 다차원 배열
int num[2][2] = {
    {1,2},
    {3,4}
};

포인터

주소값이란 ?

  • 데이터의 주소란 해당 데이터가 저장된 메모리의 시작 주소를 의미합니다. C언어에서는 1바이트 크기로 나누는데 이러한 메모리의 주소를 주소값이라고 합니다.

포인터란 ?

  • C언어에서 포인터란 메모리의 주소값을 저장하는 변수이며, 포인터 변수라고도 불립니다.

포인터 연산자

  • "&" : 주소 연산자
    • 주소 연산자는 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환합니다.
  • "*" : 참조 연산자
    • 참조 연산자는 포인터의 이름이나 주소 앞에 사용하여, 포인터에 가르키는 주소에 저장된 값을 반환합니다.

포인터 선언

int x = 89;
int *ptr = &x; // x의 주소값을 저장
int *pptr = &ptr; // 포인터 참조

인수 전달

인수 전달 방법

함수를 호출할 때에는 함수에 필요한 데이터를 인수(argument)로 전달해 줄 수 있습니다. 이때 인수를 전달하는 것에는 두 가지 방법이 있습니다.

  • Call by Value (값을 전달)
    • 이 방법은 인수로 전달되는 변수가 가지고 있는 값을 함수 내의 매개변수에 복사하는 방식입니다. 그렇기 때문에 전혀 별개의 변수가 되고 원함수로 돌아 갔을때 아무런 영향을 끼칠 수 없습니다.
int swap(int a, int b)
{   int temp;

    temp = a;
    a = b;
    b = temp;
}

int main(void)
{
    int a = 5;
    int b = 10;

    swap(a,b);
    // swap 후에도 변화 없음
    return 0;
}
  • Call by Reference (참조 전달)
    • 참조 전달은 변수의 값을 전달하는 방식이 아닌, 해당 변수의 주소값을 전달하기 때문에 조작시 영향을 받습니다.
int swap(int a, int b)
{
    int temp;

    temp = a;
    a = b;
    b = temp;
}

int main(void)
{
    int a = 5;
    int b = 10;

    swap(a, b);

    // a = 10, b = 5로 변해 있음
    return 0;
}

Reference

'💻Computer Science > 📕개발 언어 (Language)' 카테고리의 다른 글

[C][Ch.6] C언어 기초5  (0) 2021.09.09
[C][Ch.5] C언어 기초4  (0) 2021.09.08
[C][Ch.3] C언어 기초2  (0) 2021.07.29
[C][Ch.2] C언어 기초  (2) 2021.07.22
[C][Ch.1] C언어란 무엇인가 ?  (2) 2021.07.14