배열과 포인터

2023. 5. 3. 13:59개발하는중/c

728x90
반응형

#배열

-개념

하나의 변수이름에 순서에 의한 번호 부여

변수명[0], 변수명[2]......

 

-정의와 형태

동일한 자료형을 갖는 자료들의 리스트

배열의 각요소는 하나의 변수로 취급

배열은 배열명과 첨자로 구분

 

선언형태

1차원배열

배열의 첨자가 하나만 있는 배열

첨자의 개수는 배열 전체의 구성요소의 개수 의미

배열의 각요소는 배열명과 첨자로 구분

첨자는 0부터 시작

배열의 각 요소는 배열명과 첨자로 구분

자료형과 기억 클래스는 갖는다.

 

선언

자료형 배열명[개수]

int temp[10]

 

기억공간 표현

 

초기화

배열을 선언하면 기억공간을 초기화 해야 함

초기화 방법

배열선언 후 초기값 할당

int temp[2];

temp[0] = 1;

temp[1] = 2;

 

배열선언과 동시에 초기값 할당

int temp[2] = {1,2};

int temp[] = {1,2};

 

외부로부터 자료를 입력받아 초기화

 

2차원배열

자료형 배열명[행의 수][열의 수]

int temp[3][4];

 

선언과 초기화

int temp[2][2] = {1,2,3,4}

int temp[2][2] = {{1,2},{3,4}}

int temp[2][2] = {

{1,2},

{3,4}

}

 

3차원배열

 

자료형 배열명[면의 수][행의 수][열의 수]

int temp[2][2][2];

 

선언과 초기화

int temp[2][2][2] = {{{1,2},{1,2}},

{{3,4},{5,6}}}

 

 

char 형 배열

char 배열명[문자열 길이 +1]

char str[12];

 

선언과 초기화

char name[] = “LEE SUN SIN”; // 문자열 단위로 초기화 ‘/0’ 자동 입력됨

char address[] = {‘S’,‘O’,‘S’,‘\0’}; // 문자 단위 초기화 ‘/0’ 입력 직접해야함

 

함수와 배열

배열을 함수의 매개변수로 사용할 경우

함수 호출 시 배열명만 명시하여 호출

 

# 포인터

 

-개념

포인터(pointer) = 변수의 일종

변수 = 특정 데이터 값을 가지고 있음

포인터 = 특정 데이터가 저장된 기억장소의 주소(번지)값을 가지고 있음

포인터는 기억공간을 변수명으로 접근하지 않고 주소로 접근하기 위해 사용

 

일반적인 변수의 기억공간 표현

변수는 변수 선언에 의해 기억공간에 할당되고 할당된 기억공간에 변수에 대입된 데이터가 저장 이때 할당 된 기억공간은 주소(번지)가 부여 되어 있다.

 

주소를 이용하여 변수와 같은 동일한 작업 가능

포인터변수 = 변수의 주소 값을 갖는 특별한 변수

 

-선언방법

자료형 *포인터변수명;

int *p;

 

-참조방법

포인터변수의 참조 => &, * 연산자 사용

포인터 변수가 어느 변수의 주소값을 담고 있는지 사전에 정의 해주어야한다.

 

void 형 포인터

void *포인터명;

프로그램 실행시에 자료형이 결정되는 경우에 사용

저장하기 전에 명시적 형변환이 필요

 

 

-연산

포인터와 기억공간의 대응관계

포인터를 1증가 시키면 실제 주소는 int형의 경우 4byte증가, char형의 경우 1byte 증가

포인터 변수에 +,-,++,-- 연산자를 사용하는 연산

 

char 포인터

포인터는 문자열 처리에 효과적

문자열 처리에 char형 포인터 사용

char *cp = “COMPUTHER”;

 

포인터와 배열의 관계

포인터를 이용한 1차원 배열의 참조

char s[] = “SCIENCE”;

char *cp;

cp = s; -> 포인터의 cp를 이용하여 배열 s의 내용을 참조

 

포인터와 배열은 서로 호환적이다.

 

포인터 배열 => 포인터의 집합

포인터가 여러 개 사용될 때 포인터 배열로 선언

주로 문자열 배열 처리에 사용

 

이중포인터

개념

Pointer to pointer

가료가 있는 곳을 이중으로 가리킴

이중 포인터가 가리키는 주소로 가보면 자료가 아닌 주소값이 들어 있고 그 주소에 자료가 들어 있음

 

선언

int **p;

포인터 변수에 다시 포인터를 지정 하는 것

p : 기억공간의 주소

*p : 주소 p에 수록되어 있는 값 이 값이 주소로 사용

**p : 주소가 *p인 곳에 수록되어 있는 값, int 형 자료

728x90

'개발하는중 > c' 카테고리의 다른 글

구조체와 공용체  (0) 2023.05.19
함수와 기억클래스  (0) 2023.04.26
제어문  (0) 2023.04.03
연산자  (0) 2023.04.03
표준 입출력 함수  (0) 2023.04.03