Small Grey Outline Pointer 포인터와 배열
본문 바로가기
Dev./C++

포인터와 배열

by sso. 2022. 3. 6.

 

#include <stdio.h>

void main() {

	int a = 20;

	int *ptr_a; //포인터 한개를 선언

	ptr_a = &a;

	printf("a의 값: %d\n", a);
	printf("a의 주솟값: %d\n", &a);
	printf("ptr_a 에 저장된 값: %d\n", ptr_a);
	printf("ptr_a가 가르키는 변수의 값: %d\n", *ptr_a); //*ptr_a = a





	int a = 10;
	int b = 20;

	int* ptr;

	ptr = &a;
	printf("ptr이 가리키는 변수에 저장된 값: %d\n", *ptr);

	ptr = &b;
	printf("ptr이 가리키는 변수에 저장된 값: %d\n", *ptr);





	
	int a = 10;

	int* ptr;
	ptr = &a;

	int** ptr_ptr; //포인터를 가르키는 포인터 선언
	ptr_ptr = &ptr;

	printf("a=%d\n", a);
	printf("&a=%d\n", &a);

	printf("ptr=%d\n", ptr);
	printf("&ptr=%d\n", &ptr);

	printf("ptr_ptr=%d\n", ptr_ptr);



}

 

 

 

 

 

#include <stdio.h>

void main() {

	//포인터와 배열
	int data = 10;
	int* pData = &data;

	printf("%p\n", &data);
	printf("%p\n", pData);
	printf("%d\n", *pData);
	printf("%p\n", pData + 1);

}

 

 

 

#include <stdio.h>

void main() {

	int arData[] = { 3, 5, 1, 9, 7 };
	int length = sizeof(arData) / sizeof(int);

	for (int i = 0; i < length; i++) {
		arData[i] = 5 - i;
	}


	for (int i = 0; i < length; i++) {
		printf("%d ", arData[i]);
	}

	printf("\n%p\n", arData);
	printf("%p\n", &arData[0]);
	printf("%p\n", &arData[1]);
	printf("%d\n", sizeof(arData));
	printf("%d\n", *(arData + 4));

}

 

 

 

 

 

#include <stdio.h>

void main() {

	//1~10까지 배열에 담고 출력
	int arData[10] = { 0, };

	for (int i = 0; i < 10; i++) {
		arData[i] = i + 1;
		printf("%d ", arData[i]);

	}



	//10~1 까지 중 짝수만 배열에 담고 출력
	int arData[5] = { 0, }; //짝수만 출력하니까 5번만 반복
	for (int i = 0; i < 5; i++) {
		arData[i] = (i + 1) * 2; // i= 0~4, (i+1=1~5)*2 = 2,4,6,8,10
		printf("%d ", *(arData + i));

	}

}

 

 

배열의 선언


자료형 배열명[길이] = {값1, 값2...};
자료형 배열명[길이] = {초기값,};
i a[10] = {0, };


초기값

정수: 0
실수: 0.0
문자: ' '



-배열의 크기
sizeof(배열명) 

-배열의 길이
sizeof(배열명) / sizeof(자료형)



-배열의 사용
1. 배열명[index] = 값; //저장공간
2. *(배열명 + index) + 값; //값
3. *(배열명 + index) = 값; //저장공간
4. 배열명[index] + 값; //값


[index가 0부터 시작하는 이유]

배열명은 시작 주소를 가지고 있기 때문이다. 
따라서 값에 접근할 때에는 주소값 앞에 *(참조연산자)를 붙여주어야 한다
포인터 연산을 통해 배열명+정수로 각 주소에 접근하고 
참고 연산자를 맨 앞에 붙여 값에 접근한다
첫번째 칸의 값에 접근할 때에는 *(배열명+0) 이기 때문에 인덱스 번호는 0부터 시작한다

728x90

댓글