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;
}

 

포인터를 문자열 상수로 초기화 시키는것은 가능하다.

그러나 포인터를 이용하여 문자열 상수의 값을 변경은 불가능하다.

 

상수는 고정된 값이기 때문에 변수처럼 값을 변경할 수는 없다.