SH1R0_HACKER
C언어 :: 포인터 정리 (2) - 배열과 포인터의 관계 본문
// 포인터 정리(2)
// 배열과 포인터와의 관계
#include <stdio.h>
void example1();
void example2();
void example3();
int main() {
printf("예제 1번\n");
example1();
printf("\n");
printf("에제 2번\n");
example2();
printf("\n");
printf("에제 3번\n");
example3();
printf("\n");
}
void example1() {
int a = 10;
int* ptr = &a;
printf("&a = %d\n", &a);
printf("ptr = %d\n", ptr);
printf("ptr+1 = %d\n", ptr + 1); // int형 크기만큼 증가 (4byte)
}
void example2() {
int arr[10] = { 0, };
for (int i = 0; i < 10; i++) { // arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
arr[i] = i + 1;
printf("&arr[%d] = %d\n", i, &arr[i]); //arr[i]의 주소값 출력
printf("arr + %d = %d\n", i, arr + i);
}
printf("arr = %d\n", arr); // arr = &arr[0]
printf("arr+1 = %d\n", arr + 1); // arr+1 = &arr[0]+1
}
void example3() {
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
for (int i = 0; i < 10; i++) {
printf("%d ", *(arr + i)); //*(arr+i) = *(&arr[i]) = arr[i]의 값
}
printf("\n");
for (int* ptr = arr; ptr < arr + 10; ptr++) {
// 포인터 ptr 선언 후 arr의 값 (arr[0]의 주소값) 대입
// ptr의 값이 arr+10 미만 (arr[9]의 주소값)까지 반복
// ptr의 값 1 증가 (ptr + 1 = arr + 1 = &arr[1])
printf("%d ", *ptr);
}
printf("\n");
}
'Programming Language > C' 카테고리의 다른 글
C언어 :: 포인터 정리 (3) - 배열 포인터 (0) | 2021.01.16 |
---|---|
C언어 :: 포인터 문제 (2) (0) | 2021.01.16 |
C언어 :: 포인터 정리(1) - 포인터란? (0) | 2021.01.16 |
C언어 :: 포인터 문제 (1) (0) | 2021.01.16 |
버블 정렬 (bubble sort) (0) | 2020.10.18 |