C언어 독학 배열의 길이 없이 초기화하기
C언어 독학 배열의 길이 없이 초기화하기 C언어에서 배열은 1차원과 다차원(2차원)이 있는데요. 이 배열들을 초기화하는 과정은 거의 비슷하다는 걸 지난 글에서 확인해봤습니다. '거의' 같다는 건 다른 점도 있다는 뜻이겠죠?^^ 몇 가지 차이점 중에서 이번 글에서 알아볼 배열의 길이를 알려주지 않고 초기화하는 방법이 조금 차이가 있습니다. 예를 들어 1차원 배열은 다음과 같이 길이를 명시하지 않고 초기화하면... int x []={1, 2, 3}; ▲ int형 배열 x의 길이가 3이라는 걸 컴파일러가 자동으로 찾아줍니다. 하지만 2차원 배열은 조금 다른데요. 지난 글에서 정리했듯이 2차원 배열은 행과 열로 값들이 위치하게 되는데... int y[][]={1, 2, 3, 4, 5,6}; ▲ 이렇게 행, 열의..
C언어 독학 배열을 인자로 전달하기
C언어 독학 배열을 인자로 전달하기 배열이란 같은 자료형을 여러 개 모아 놓은 데이터의 형식인데요. 이 데이터를 함수에 인자로 전달할 수 있을까요? 지금까지 공부하면서 정리했던 대로 배열의 이름은 포인터 변수와 와 똑같은 역할을 하기 때문에 배열의 이름을 인자로 전달하면 그 배열의 첫 번째 요소의 주소 값이 전달됩니다. 하지만 함수에서는 매개변수로 배열을 사용할 수 없기 때문에 난관에 부딪치게 되는데요. 이때 매개변수에 포인터 변수는 사용할 수가 있습니다. 즉 배열로 전달하고 포인터 변수로 받아서 그 주소 값을 찾아가면 되는 거예요. 포인터 변수와 배열은 모두 변수의 메모리상의 주소 값을 저장하는 역할을 하기 때문에 가능한 것입니다. 말이 좀 어렵네요. ㅎㅎ 그래도 배열을 전달하고 포인터 변수로 받으면 ..
C언어 프로그램 포인터 배열
C언어 프로그램 포인터 배열 ■ 포인터도 변수이다. 데이터가 저장된 메모리의 주소를 저장하는 변수이기 때문에 포인터도 배열을 선언할 수 있으며 선언 방식은 다음과 같다. int * aaa[10]; double * bbb[20]; 이렇듯 선언하는 방법은 일반 변수의 배열을 선언하는 방법과 같다. 이렇게 배열로 선언된 포인터를 이용하는 예제를 간단히 만들어본다. ▲ int형 변수 su1~su4까지 각각 값들을 초기화하고 이 변수들의 주소 값을 저장할 arr 포인터 변수의 배열을 선언하고 있으며 각 주소 값으로 초기화 하고 있다. 그리고 * 연산자로 각각의 요소에 접근해서 저장된 값을 출력하고 있는 내용인데 프로그램을 실행하면 각각의 변수에 저장된 값이 순서대로 출력되는 걸 확인할 수 있다. 이처럼 포인터도 ..
C언어 독학 배열 이름은 포인터이다
C언어 독학 배열 이름은 포인터이다 ■ 배열은 같은 자료형의 데이터를 메모리에 연속으로 저장하는 것이고 포인터는 특정 변수의 메모리상의 주솟값을 저장하는 것인데요. 글의 제목처럼 배열 이름이 포인터라면 배열도 값이 저장된 메모리의 주솟값을 저장하고 있다는 의미겠죠? 다음 예제를 통해서 그 결과를 확인해보겠습니다. ▲ a [] 배열에 int형 자료형 세 개를 저장하고 있는데요. 서식 문사 "%p"를 이용해서 각 요소들의 값을 출력해보겠습니다. 그리고 배열의 이름 a의 값도 출력해볼게요. ▲ 이 프로그램의 실행 결과에서 알 수 있듯이 배열의 이름이 가리키고 있는 주소와 배열의 첫 번째 요소가 가리키고 있는 주소의 위치가 같습니다. 즉, 배열의 이름은 저장된 메모리의 첫 번째 요소의 주소값을 저장하고 있다는 ..