*배열 (array)같은 자료형의 변수를 일렬로 늘어놓은 형태이다. 반복되는 작업을 쉽게 하도록 해주며, 반복문에서 배열을 사용하면 반복되는 값을 쉽게 처리할 수 있다. Show 변수 이름 뒤에 대괄호 [ ] 를 붙여 size를 설정한다. 그리고 값을 초기화 할때는 중괄호 { }를 사용한다. *배열의 선언 자료형 배열명[배열의 크기(요소의 개수)] = {값, 값, 값 ,,,,,,,,,}; (초기화값은 없어도 된다.) 배열의 값들은 요소(element)라고 부르며, 첫번째 요소의 자리값(index)은 0부터 시작한다. 즉, 첫번째 요소의 인덱스는 0이다. 만약 인덱스를 초과하는 범위의 값을 출력한다면, 컴파일 에러는 발생하지 않지만 쓰레기값이 출력된다. (엉뚱한 메모리주소값에 이미 저장되어 있는 값을 출력하기 때문에) * 배열 선언시의 size 생략
두번째 줄처럼, 초기값과 size를 모두 생략한다면 컴파일에러가 발생한다. *배열 예제 1: 배열을 선언하고 출력하기
*배열 예제 2: 배열의 원소중, 최댓값 찾아 출력하기
배열 값을 모두 0으로 초기화하기 배열의 값을 초기화할때 { } 중괄호 속을 비워두면, 값이 모두 0으로 초기화된다.
* 배열 + 반복문시 index 설정C에서는 인덱스를 벗어나도 에러발생이 없으므로, for문의 조건식에 배열의 size를 직접 숫자로 입력하기보다는 for (int i = 0 ; i < sizeof(Arr) / sizeof(int) ; i++) 와 같이 sizeof 함수를 이용하는게 실수를 방지할 수 있다. * 배열과 포인터배열의 첫번째 요소는 주소값만 담고있다. 즉, 배열은 주소값이기 때문에 포인터에 넣을 수 있다, 그리고 주소값이기 때문에 따로 주소값 연산자 &를 사용하지 않아도 된다. (즉 ,실제 동작에서는 배열 = 포인터 라고 할수있다)
배열과 포인터의 차이점 : sizeof로 크기를 보았을때 다른 결과가 나온다. 배열 : 배열이 차지하는 메모리만큼 나온다. ( int 자료형 4개라면 4byte * 4 = 16byte ) 포인터 : 포인터의 자료형의 size가 나온다. ( int형 포인트라면 4byte ) * 예제) 배열을 이용하여 10진수를 2진수로 바꾸기.
*문자열과 배열C언어는 문자열이라는 자료형을 제공하지 않습니다. 따라서 C언어에서의 문자열은 문자(Char : Character)를 여러개 묶어놓는 문자들의 배열형태로 문자열을 표현합니다. ex) char a[20] = "Hello world" *문자열 예제 1 : 문자열에서 특정값 수정하기 #include <stdio.h> int main(void){ char a[20] = "Hello world"; a[5] = '!'; printf("%s\n",a); return 0; } *문자열 예제 2: 문자열에서 특정 알파벳의 개수 count하기
* 2차원 배열2차원 배열은 세로(column) 가로(row)로 이루어져 있기 때문에 대괄호 [ ] 를 2번 사용해서 선언한다. ex ) int arr[3][3] = { { 1, 2, 3 } , { 4, 5, 6 } }; 따라서, 값에 접근할때도 2개의 인덱스를 입력하여 접근한다. 배열[세로인덱스][가로인덱스]; 0으로 초기화된 배열 선언하기
2차원 배열 출력하기
sizeof 함수를 이용하여, 2차원 배열의 row, column 구하기
가로 한줄(sizeof(numArr[0])을 int의 size로 나누게 되면, 가로 한줄에 몇개의 요소가 있는지 도출된다. 그 요소의 갯수가 세로의 개수이므로 col이 된다. * 2차원 배열과 포인터2차원 배열을 포인터에 넣으려면
* 포인터를 배열처럼 사용하기
* 포인터를 2차원 배열로 사용하기.포인터를 2차원 배열처럼 사용하려면, 반복문으로 메모리를 할당해줘야한다.
|