2023. 5. 3. 13:59ㆍ개발하는중/c
#배열
-개념
하나의 변수이름에 순서에 의한 번호 부여
변수명[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 형 자료