[c + +] 배열 되 돌리 기

1 차원 배열
사실 vector 를 지원 한다 면 인용 만 하면 됩 니 다.
void testFun(vector<int> &var)

1. 함수 포인터 되 돌리 기
http://www.cnblogs.com/gisbeginner/archive/2012/10/30/2746313.html
c + + 에 서 는 함수 의 반환 값 으로 배열 을 허용 하지 않 습 니 다.
int [] someFunction( ); //ILLEGAL 

함수 가 배열 로 되 돌아 가 려 면 해당 배열 의 형식 에 대한 지침 을 되 돌려 주어 야 합 니 다 you must return a pointer to the array base type and have the pointer point to the array. So, the function declaration would be as follows:
 int* someFunction( ); //Legal
int* doubler( int a[], int size)
{
int* temp = new int[size];
for ( int i =0; i < size; i++)
 temp[i] = 2*a[i];
 return temp;
 }
int main(){
int a[] = {1, 2, 3, 4, 5};
int* b;
b = doubler(a, 5);

delete[] b

return 0;
}

2.
void doubler( int* a, int size)
{
  for ( int i =0; i < size; i++)
       a[i]=0;
}
int main(){
  int a[5];
  doubler(a, 5);

  return 0;
}

2 차원 배열
#include <iostream>
using namespace std;
void property(int shape[4][4])
{
 shape[0][0]=1;
}

int main()
{
 int shape[4][4];
 property(shape);
 cout<<shape[0][0];
 return 0;
}
#include <iostream>
using namespace std;
void property(int (*shape)[4])
{
    shape[0][0]=1;
}

int main()
{
    int shape[4][4];
    property(1,shape);
    cout<<shape[0][0];
    return 0;
}
void fun2(int **ga,int m,int n)
{
    ga=new int*[m];
    for(int i = 0; i < m; i++)
        ga[i] = new int[n];
}
int** newArray(int m,int n)
{
    int** array=new int*[m];
    for(int i = 0; i < m; i++)
        array[i] = new int[n];
    return array;
}


int main()
{
    int **shape;
    int m,n;
    m=2;n=4;
    shape=newArray(m,n);
    for(int i = 0; i < m; i++)
        delete []shape[i];
    delete []shape;
}

좋은 웹페이지 즐겨찾기