2015年12月27日 星期日

function回傳陣列的方式

錯誤的方式:

int[] test() {
int b[3] ={1, 2, 3};
return b;
}


我們可以嘗試使用pointer回傳:

int* t()
{
  int *b=new int[3]={1,2,3};
  return b;
}

main()
{
  int *a;
  a=t();
}


note: 但如此一來,有可能會造成memory lost,由函式回傳陣例, 是個糟透了的習慣,memory 的 配置 和 釋放, 應該由使用的人去做, 由函式回傳陣例, 就會破壞了 配置 和 釋放 一對的規則, 所引申的問題有: 難於應用和延伸, memory lost ... ...

較佳的方式:

void t( int* b, int n_b )
{
  for( int i=0; i<n_b; i++ )
    b[i] = i;
}

int main()
{
  int a[10];
  t(a,10);
 
  system("pause");
  return 0;
}
 


沒有留言:

張貼留言