본문 바로가기
C 언어

c 언어[027] 배열(array)과 포인터( pointer)

by Smart Factory in 2020 2021. 10. 6.
728x90
반응형

안녕하세요. 스마트 팩토리입니다. 
c 언어[027] 배열(array)과 포인터( pointer)에 대해 알아보겠습니다. 

1. 배열의 인덱스와 주소값,배열값 출력

가. 배열의 주소와 배열값 출력

  배열의 주소= 배열 인덱스[0]번 값과 같다. 
  배열값은  for문을 이용해서 출력한다. 
   (단,문자열은 그냥 출력)
  배열 인덱스0번부터 순차적으로 주소값이 정해진다.(int 형은 4바이트)

숫자 배열의 경우  

arr을 출력하면 배열의 주소값이 나오고 이는 인덱스 0번의 주소값과 같습니다 .

%x,%p는 주소값을 16진수로 표현해 줍니다. %x는 값만 표기하는 반면 %p는 자료형의 크기만큼 전부 표기해 줍니다. 

for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
printf("arr[%d]는 %d\n", i, arr[i]);

반복문을 통해서 자료의 값을 출력할 수 있습니다.

#include<stdio.h>
int main() {
int arr[5] = { 10,20,30,40,50 };
printf("arr 주소 값 : %d \n", arr);
printf("arr 값 : %p \n", arr);
printf("arr 주소 값 : %d \n", &arr[0]);
printf("arr 값 : %x \n", arr);
for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
printf("arr[%d]는 %d\n", i, arr[i]);
}
}

나. arr, arr+1 값출력

 

 

printf("arr   값 : %d\n", arr);
printf("arr+1 값 : %d\n", arr+1);

arr 과 arr1+1의 값을 보면 알 수 있듯이 배열 요소의 자료형의 크기(4바이트) 만큼 증가하는 것을 볼 수 있습니다.

배열의 인덱스 0번과 인덱스 1번의 관계로 arr과 arr+1 이 됩니다. 

#include<stdio.h>
int main() {
int arr[5] = { 10,20,30,40,50 };
printf("arr   값 : %d\n", arr);
printf("arr+1 값 : %d\n", arr+1);

for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
printf("arr[%d]는 %d\n", i, &arr[i]);
printf("arr[%d]는 %d\n", i, arr+i);
}
}

다. 배열과 포인터 

배열명에 1씩 증가하면 배열의 인덱스 번호를 의미합니다. 이는 그 인덱스 값을 확인하기 위해서 포인터로 지정하면 값을 볼 수 있습니다. 

printf("arr[%d]의 요소값: %d\n", i, arr[i]);
printf("*arr[%d] 포인터값은:%d\n", i, *(arr + i));

출력함수에서  arr[i]와 *(arr+i) 가 동일한 값이 나온다는 것을 알 수 있습니다. 

 

#include<stdio.h>
int main() {
int arr[5] = { 10,20,30,40,50 };
printf("arr   값 : %d\n", arr);
printf("arr+1 값 : %d\n", arr+1);

for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
printf("arr[%d]의 주소값 :%d\n", i, arr+i);
printf("arr[%d]의 요소값: %d\n", i, arr[i]);
printf("*arr[%d] 포인터값은:%d\n", i, *(arr + i));
}
}

 

728x90
반응형

댓글