#include <iostream>
using namespace std;
void func(int a[], int n)//또는 int*a,
{
int i;
for (i = 0; i < n; i++)
cout << a[i] << endl;
}
int main()
{
int A[5] = { 2,4,6,8,10};
func(A, 5);
return 0;
}
배열은 곧 포인터이므로, func인자에 있는 A는 배열의 주소라 할 수 있다
func의 매개변수에 전달된 int a[]는 사실상 포인터다. 왜냐하면 swap함수에서 봤듯이, 포인터는 변수의 주소를 저장하기 때문이다.(int *a로 선언해도 동일)
인자의 5는 매개변수의 n에 복사된다
그래서 []안에 0보다 큰 어떠한 값을 넣어도 포인터처럼 동작한다
call by address에 의해 func함수내에서 배열의 값을 변경하면 main함수에서도 그대로 적용이 된다. a[i] = i; cout<<a[i]<<endl;로 하면 0,1,2,3,4가 순서대로 출력된다.
#include <iostream>
using namespace std;
int * func(int n)
{
int* p;
p = (int*)malloc(sizeof(int) * n);
for (int i = 0; i < n; i++)
{
p[i] = i;
cout << p[i] << endl;
}
free(p);
return p;
}
int main()
{
int* A;
A = func(5);
return 0;
}
