안녕하세요 길벗수험서 운영팀입니다.
[80]
배열에서 배열이름은 해당 배열의 시작 주소를 의미합니다.
int a[10];
if (*a==a[0]) printf("true');
else printf("false");
위와 같은 코드를 출력하면 true가 찍히게 됩니다.
즉 예제2와 같이 a[5]라는 배열이 선언되었을 때,
a라는 것은 a[5]의 시작값인 a[0]의 주소인 &a[0]이 되는 것이죠.
이제 다시 보죠. 배열의 주소를 통채로 넘길 때는 배열의 시작주소만 넘겨주면 됩니다.
int *a, b[10];
a=b;
이 때 포인터 변수 a는 배열 b와 동일하게 사용할 수 있게 됩니다. a[3]과 같이 말이죠.
배열에 저장된 값들 중 하나의 값에 대한 주소를 넘기고 싶다면 해당 값을 표현하여 &를 붙여줍니다.
int *a, b[10] = { 0,1,2,3,4,5,6,7,8,9};
a=&b[4];
이 때 포인터 변수 a는 b[4]의 주소를 갖게 됩니다. *a를 출력하게 되면 4가 출력되겠죠.
배열과 포인터 관련해서는 이후 예상문제은행을 통해 계속 언급되면 해설을 통해 설명합니다.(113p 이후)
해당 예제들과 함께 학습하시는 것이 이해에 좀 더 도움이 될 것입니다.
[86]
앞에서 문자열을 처리할 때 어떻게 했는지 떠올려보세요.
char a[]= "abcdef";
위와 같이 처리했었죠. 이를 응용한 방법입니다.
char str[] = "KOREA";
위의 변형이 아래의 코드라고 할 수 있습니다.
char *str;
str = "KOREA";
포인터 변수로 선언하였지만 이후 문자열을 배정함으로써 문자 배열과 같이 사용할 수 있게됩니다.
좀더 설명하자면 char *str은 문자형 포인터 변수 str에 "KOREA" 문자열이 저장된 곳의 시작 주소("K"가 저장된 주소)가 저장된 것이 됩니다.
행복한 하루되세요 :)
-
관리자2019-03-22 10:37:33
안녕하세요 길벗수험서 운영팀입니다.
[80]
배열에서 배열이름은 해당 배열의 시작 주소를 의미합니다.
int a[10];
if (*a==a[0]) printf("true');
else printf("false");
위와 같은 코드를 출력하면 true가 찍히게 됩니다.
즉 예제2와 같이 a[5]라는 배열이 선언되었을 때,
a라는 것은 a[5]의 시작값인 a[0]의 주소인 &a[0]이 되는 것이죠.
이제 다시 보죠. 배열의 주소를 통채로 넘길 때는 배열의 시작주소만 넘겨주면 됩니다.
int *a, b[10];
a=b;
이 때 포인터 변수 a는 배열 b와 동일하게 사용할 수 있게 됩니다. a[3]과 같이 말이죠.
배열에 저장된 값들 중 하나의 값에 대한 주소를 넘기고 싶다면 해당 값을 표현하여 &를 붙여줍니다.
int *a, b[10] = { 0,1,2,3,4,5,6,7,8,9};
a=&b[4];
이 때 포인터 변수 a는 b[4]의 주소를 갖게 됩니다. *a를 출력하게 되면 4가 출력되겠죠.
배열과 포인터 관련해서는 이후 예상문제은행을 통해 계속 언급되면 해설을 통해 설명합니다.(113p 이후)
해당 예제들과 함께 학습하시는 것이 이해에 좀 더 도움이 될 것입니다.
[86]
앞에서 문자열을 처리할 때 어떻게 했는지 떠올려보세요.
char a[]= "abcdef";
위와 같이 처리했었죠. 이를 응용한 방법입니다.
char str[] = "KOREA";
위의 변형이 아래의 코드라고 할 수 있습니다.
char *str;
str = "KOREA";
포인터 변수로 선언하였지만 이후 문자열을 배정함으로써 문자 배열과 같이 사용할 수 있게됩니다.
좀더 설명하자면 char *str은 문자형 포인터 변수 str에 "KOREA" 문자열이 저장된 곳의 시작 주소("K"가 저장된 주소)가 저장된 것이 됩니다.
행복한 하루되세요 :)