C,C++
포인터와 배열의 관계
권멋져
2021. 3. 27. 14:12
int main()
{
int num = 10;
int* ptr;
ptr = #
printf("%p\n", ptr); // 결과 주소값
printf("%p\n", &num); // 결과 주소값
printf("%d\n", num); // 결과 10
printf("%d", *ptr); // 결과 10
int arr[5] = { 1,2,3,4,5 };
ptr = arr; //배열과 같은 개념
for (int i = 0; i < (sizeof(arr) / sizeof(int)); i++)
{
printf("%d\n", arr[i]);
printf("%d\n", *(arr + i));
printf("%d\n", ptr[i]);
printf("%d\n", *(ptr + i));
}
return 0;
}
표현식은 같게 사용할 수 있으나 메모리에 접근할 때는 다르다.
int main()
{
char arr[] = "Golf";
arr[3] = 'd'; // 정상
printf("%s", arr);
char* ptr = "Golf";
ptr[3] = 'd'; //오류
printf("%s", ptr);
return 0;
}
포인터를 문자열 상수로 초기화 시키는것은 가능하다.
그러나 포인터를 이용하여 문자열 상수의 값을 변경은 불가능하다.
상수는 고정된 값이기 때문에 변수처럼 값을 변경할 수는 없다.