오답노트

포인터와 배열의 관계 본문

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

 

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

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

 

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

'C,C++' 카테고리의 다른 글

malloc 과 sizeof  (0) 2021.03.27
scanf, scanf_s 용법 차이  (0) 2021.03.27
[C,C++] 파일 읽기  (0) 2021.03.18
이중배열 동적할당 및 해제  (0) 2021.03.11
int -> char (상하위 비트 분리)  (0) 2021.02.09