참고한 자료
https://eskeptor.tistory.com/119?category=928922
#include <stdio.h>
int main()
{
int num = 5;
int* ptrNum = # // num의 주소값을 int형 포인터형 변수인 ptrNum에 넣어줌
// 선언할 때 *의 의미는 "포인터형 변수"를 선언한다는 뜻
// 즉, ptrNum에 num의 주소값이 들어가 있단 걸 아는 게 가장 중요!!
// 5 출력됨
printf("num: %d \n", num); // num의 값
// 5 출력됨
printf("*ptrNum: %d \n", *ptrNum); // 포인터를 이용하여 나온 값
// 포인터형 변수인 ptrNum
// 즉 num의 주소값이 들어가 있는 ptrNum 변수가 담고 있는 메모리 주소에 저장되어 있는 내용을 역참조로 가져옴
// 0x7ffe6b6dcc44 출력됨
printf("num's address: %p \n", &num); // num의 주소값
// 0x7ffe6b6dcc44 출력됨
printf("ptrNum's address: %p \n", ptrNum); // 포인터가 담은 변수의 주소값
return 0;
}
#include <stdio.h>
int main()
{
int arr[4] = {1, 2, 3, 4};
int* ptr = arr;
// 포인터를 배열의 첫번째 인덱스에 연결(arr[0])
// 배열의 이름은 배열의 첫번째 요소의 "주소"를 담고 있으므로 &를 안 써줘도 됨! (바로 주소)
// 변수에 포인터를 연결했을 때와 동일하게 자료형이 같아야.
return 0;
}
출처: https://eskeptor.tistory.com/120?category=928922 [Hello World]
printf("*(ptr + 1): %d \n", *(ptr + 1));
printf("*(++ptr): %d \n", *(++ptr));
// 포인터의 주소에 1을 더한다.
// 해당 포인터의 자료형에 맞게 다음 주소로 이동한다는 것.
// int형 포인터가 가리키는 이전주소가 0004였다면 1을 더하면 0008이 됨
printf("*ptr + 1: %d \n", *ptr + 1);
// 포인터가 가리키는 값의 결과에 1을 더한다.
#include <stdio.h>
int main()
{
int nums[4] = {1, 2, 3, 4};
int* ptr = nums; // 포인터를 배열의 첫번째 인덱스에 연결(nums[0]) printf("*ptr: %d \n", *ptr); // arr[0]
printf("*(ptr + 1): %d \n", *(ptr + 1)); // arr[1]: arr 주소(배열은 이름이 주소를 담음)의 첫번째 값을 가져오는 것
printf("*(ptr + 2): %d \n", *(ptr + 2)); // arr[2]
printf("*(ptr + 3): %d \n", *(ptr + 3)); // arr[3]
return 0;
}
#include <stdio.h>
#include <string.h>
int sumArr(int* arr, int length)
// sumArr함수에서 arr을 매개변수로 받을 때 배열의 이름이 주소값이기 때문에
// 처음 받을 때 자료형을 알려주기 위해 int*, 즉 int형 포인터형 변수라는 것을 말해줌
{
int total = 0;
for (int i = 0; i < length; i++)
{
total += arr[i]; // *(arr + i)와 동일함! arr의 주소에 접근해 i번째 값을 가져온다는 것
}
return total;
}
void printArr(int* arr, int length)
{
printf("배열: ");
for (int i = 0; i < length; i++)
{
printf("%d ", arr[i]); // *(arr + i)와 동일함! arr주소에 접근해 i번째 값을 가져옴
}
printf("\n");
}
int main(void)
{
int arr[] = { 1, 2, 3, 4 };
printArr(arr, sizeof(arr) / sizeof(int));
printf("배열의 총합: %d\n", sumArr(arr, sizeof(arr) /sizeof(int)));
return 0;
}