C언어 독학 포인터 배열
C언어 독학 포인터 배열 ■ 포인터도 변수의 메모리 주소를 저장하는 일 종의 변수이다. 그렇기 때문에 이 또한 배열로 저장할 수 있는데 일반 변수의 배열과 크게 다르지 않기 때문에 간단한 예제를 통해서 그 내용을 알아보고 이중 포인터가 필요한 이유에 대해서 정리해본다. 먼저 선언하는 형식은 다음과 같다. int * aaa[10]; ▲ 길이가 10인 int형 포인터 변수이다. aaa가 가리키는 것은 첫 번째 요소 aaa[0]의 주소인데 이는 이는 싱글 포인터의 주소이기 때문에 aaa는 더블 포인터가 된다. 예제에서 확인해본다. ▲ 세 개의 변수를 선언 및 초기화하고 각각의 주소를 가리키는 aa, bb, cc를 선언하고 있다. 그리고 int형 pabc를 선언하고 세 개의 포인터 변수로 초기화하고 있는데 이때..
C언어 프로그램 문자열과 포인터
C언어 프로그램 문자열과 포인터 ■ 문자열을 선언하는 일반적인 방식은 다음과 같이 배열에 char 변수를 저장하는 방법일 것이다. char ch[]="Hello!"; 이때 배열의 길이는 자동으로 초기화되기 때문에 신경 쓰지 않아도 되고,이는 변수들을 모아놓은 배열이다. 그렇기 때문에 그 변수에 저장된 값들을 변경할 수가 있는데 간단하게 확인해본다. ▲ 먼저 ch 배열로 문자열을 저장한 후 출력하고 있으며 문자열의 여섯 번째 요소 ch[5]='!'에 접근해서 그 값을 '?'로 변경하고 있는데 프로그램 실행 결과를 보면 정상적으로 그 값이 바뀐 걸 확인할 수 있다. 이처럼 배열을 이용한 문자열은 저장된 값의 변경이 가능하다. 하지만 이번 글에서 알아볼 포인터는 그 안에 저장된 문자열 값을 변경하지 못한다는 ..
c언어 프로그래밍 1차원 배열 이름을 대상으로 한 * 연산
c언어 프로그래밍 1차원 배열 이름을 대상으로 한 * 연산 ■ 지난 글에서 배열의 이름은 포인터 형이라는 걸 확인해봤었는데요. 둘이 같다면 배열 이름을 대상으로도 *연산을 할 수도 있고 반대로 포인터를 배열의 이름처럼 사용해서 그 요소에 접근할 수 있다는 의미인데요. 그 과정들을 예제로 살펴보겠습니다. 먼저 배열 이름을 대상으로 *연산을 하는 과정입니다. ▲ int형 배열 a와 double형 배열 b를 각각 선언하고 값을 초기화하고 있는데요. a와 b에 *연산자로 접근하고 있습니다. 지난 글에서 배열의 이름은 첫 번째 요소 [0]의 주소값을 저장한다고 했었는데요. *연산자로 그 자리에 접근해서 저장된 값들을 출력하고 있는 모습입니다. 10과 10.1이 출력되겠죠? 확인해보겠습니다. ▲ 예상했던 값이 출력..
c언어 독학 포인터 변수
■ c언어에서 포인터 변수도 어떤 값을 저장하기 위한 변수의 한 종류인데 여기에는 다른 변수의 메모리 주소값이 저장됩니다. 일단 이렇게 개념을 잡고 예제에서 int형 변수를 하나 선언하고 초기화 한 후 그 값이 저장된 메모리의 주소값을 불러와서 포인터 변수에 저장하고 출력하는 과정을 통해서 포인터 변수를 알아보겠습니다. ▲ int x를 선언하고 10으로 초기화하고 있고, [int * a=&x;]로 int형 포인터 변수 a를 선언하고 그 값을 x의 주소값을 불러와서 초기화하고 있는데요. 포인터를 선언하는 방법은 그림과 같이 [자료형 * 포인터 이름] 형식입니다. 그리고 거기에 저장될 주소값을 불러올 때는 "&'연산자를 사용합니다. 이렇게 선언하고 초기화한 a에 저장된 메모리 주소값을 출력하기 위한 서식 문..