기초 CS - 포인터 6

킴스코딩클럽·2022년 10월 19일
1

CS기초 시리즈

목록 보기
40/71

배열을 포인터로 넘기기

1차 배열 함수로 넘기기

void MyFunction1(int* param,int size)
{
	
}

void MyFunction2(int param[],int size)
{
	//이렇게 쓰면 안넘어감
	//배열의 크기가 같이 넘어가야함
}

int main()

{
	int array[3]{ 1,2,3 };
	
	MyFunction1(array, 3);
	MyFunction2(array, 3);
	//컴파일러가 둘다 포인터로 처리하고 있음
	//반드시 크기를 같이 넣어야 안전하다
}

2차 배열 함수로 넘기기

void Print(int(*input)[3], int row, int col)
{
	int(*p)[3] = input;
	//포인터를 매개변수로 받을려면 
	//매개변수를 다른 것으로 바꾸거나 하지 않는 편이 좋음
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < col; j++)
		{
			std::cout << *((*p+i)+j) << std::endl;
			
		}
	}
}

int main()
{
	int array[2][3]
	{
		{1,2,3},
		{4,5,6}
	};
	Print(array, 2, 3);
}

이차원 배열이라면 배열 형식 명시하기

//void Print(int* input, int count)
void Print(int(*input)[3], int count)
//이차 배열이라면 타입을 명시해야함
{
	int *p = input;
	//포인터를 매개변수로 받을려면 
	//매개변수를 다른 것으로 바꾸거나 하지 않는 편이 좋음
	for (int i = 0; i < count; i++)
	{
		std::cout << (*p)++ << std::endl;
	}
}

int main()
{
	int array[2][3]
	{
		{1,2,3},
		{4,5,6}
	};
	// 오류 :Print(array ,6);
	// int 포인터를 만들어야함
	Print(&array[0][0], 6); 
	// 0행 0열의 주소 : 하지만 이 표기법은 모호함

	int array2[3]{ 1,2,3 };
	Print(&array2[0], 3);

	int x = 1;
	Print(&x, 1);
}
profile
공부 기록용

0개의 댓글