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);
//컴파일러가 둘다 포인터로 처리하고 있음
//반드시 크기를 같이 넣어야 안전하다
}
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);
}