반응형

포인터 3

11-2) 배열 시작 주소

배열 변수의 이름은 배열의 시작 주소 포인터는 일반 변수의 주소만 가질 수 있는 것이 아니라 배열과 같이 그룹으로 묶인 메모리의 주소도 가질 수 있다. 포인터 변수에 배열의 시작 주소를 대입할 때는 일반 변수와 마찬가지로 &연산자를 사용하면 된다. 배열의 경우에는 첫 요소인 data[0]의 시작 주소가 배열 전체의 시작 주소와 같기 때문에 다음과 같이 &연산자를 사용한다. char data[4]; char *p = &data[0]; //배열의 첫 번째 항목의 주소가 배열 전체의 시작 주소와 같음 위 설명에서 사용한 &data[0]은 포인터 표기법을 사용하면 &*(data+0)과 같이 표기할 수 있다. 그리고 +0은 생략할 수 있기 때문에 & *data라고 적어도 된다. char *p = &data[0] ..

C언어 2021.03.14

11) 배열과 포인터 표기법

배열 표기법과 포인터 표기법의 관계 배열은 [ ]연산자를 사용하여 표현하고 포인터는 *연산자를 사용하여 나타낸다. 변수를 선언할 때 변수의 역할이나 특성이 결정되기 때문에 표현 방식의 선택은 매우 중요하다. 포인터는 포인터 변수가 가리키는 메모리의 시작 주소를 기준으로 삼고, 배열도 해당 배열이 사용하는 메모리 그룹의 시작 주소를 기준으로 삼는다. 따라서 두 문법은 표기만 다를 뿐 문법 구조는 비슷하다. 그래서 다음과 같이 두 문법의 표기법을 바꿔서 사용할 수도 있다. 배열 포인터 char data[5]; data[1] = 5; // *(data+1) = 5;는 data[1] = 5;와 같음 *(data+1) = 5; char data; char *p = &data; //data 변수의 주소를 p에 저장..

C언어 2021.03.05

9-1) 포인터 변수의 주소 연산

사용할 메모리의 범위를 기억하는 방법 자신이 사용할 메모리의 범위를 기억하는 방법은 크게 두가지가 있다. 시작주소와 끝 주소로 메모리 범위 기억하기 시작주소와 끝 주소로 메모리 범위를 기억하려면 각각의 주소를 기억하는 데 총 8바이트가 필요하다. 시작주소인 100번지를 저장하는데 4바이트가 필요하고 끝 주소인 103번지를 저장하는데 또 4바이트가 필요하기 때문이다. 시작주소와 사용할 크기로 메모리 범위 기억하기 '시작주소'와 '사용할크기'로 메모리 범위를 기억하는 것도 두가지 정보를 기억해야 합니다. 시작 주소인 100번지를 저장하는 데 4바이트가 필요하고, 사용할 크기를 저장하는데 또 4바이트가 필요합니다. 그런데 c언어 문법은 메모리를 사용할 때 항상 그 메모리의 크기를 먼저 결정하도록 되어 있다. ..

C언어 2021.02.08
반응형