노는게 제일 좋습니다.
14회차 : 첨자 연산, 포인터 배열 본문
참고자료 http://soen.kr/
그 어느때보다 혼돈의 카오스가 가득한 공부였다...
주변에 실력자들이 많아서 감사하게도 편하게 공부한다.
1. 부분배열(subArray)
int a[2][5]; 라고 한다면 보통 다차원 배열이라고 부르지만 c에는 다차원배열이 존재하지 않고 오직 일차원배열만이 존재한다.
즉, a[2][5]배열은 이차원배열이 아니며 a[0], a[1] 이라는 부분배열을 가진다. a[0]는 그저 a의 원소가 아니라, 하나의 완전한 배열인 것이다.
a[0]이라는 배열은 a[0][0]~a[0][4]라는 원소를 가질 것이다.
2. 포인터 배열
원소가 포인터형인 배열.
예 : char *a[5]={"java","python","perl","ruby","cpp"};
만약 위와같이 정의를 해두면, "java"가 메모리공간 어딘가에 저장되고, 그 포인터가 반환돼서 a[0]으로 쏙 들어간다.
printf("%s",a[0])을 하면 그래서 "java"가 출력된다.
%s는 문자열의 포인터를 받아 문자열을 출력한다.
3. 배열과 포인터의 차이
- 배열은 상수, 포인터는 변수. 가리키는 대상이 바뀔 수 있는지 여부가 다르다.
- 배열 원소에 접근할 때는 배열 포인터에서부터 인덱스만큼 이동해 읽지만, 포인터는 대상체로 직접 이동한다. 접근속도는 포인터가 배열보다 빠르다.
'C' 카테고리의 다른 글
16회차 : 문자열 함수, 수치와 문자열 (0) | 2017.03.01 |
---|---|
15회차 : 배열 포인터, 배열과 문자열 (0) | 2017.02.26 |
13회차 : 동적 메모리 할당, 이중 포인터 (0) | 2017.02.20 |
12회차 : void형 포인터 (0) | 2017.02.18 |
11회차 : 포인터 연산 (0) | 2017.02.18 |
Comments