以前寫過一篇關于數組長度的文章,經過某位好友的指點,知道了新的解決方法了

/**//*******************************************
T *a[n]和T (*a)[n]的區別
---------
T *a[n] 數組內存放n個T型指針
T (*a)[n] 存放n個T型元素的數組
指針a指向這個數組//a為二級指針


---------------------------------------
T &a[n]與T (&a)[n]的區別
---------
T &a[n] [退化為指針]
T (&a)[n] 存放n個T型元素的數組的引用

********************************************/

#include<iostream>
using namespace std;

int insertsort(int (&a)[10])//防止了指針退化


{
int j, key;
for(int i=1; i<sizeof(a)/sizeof(int); i++)

{
key = a[i];
j = i - 1;
while (a[j]>key && j>=0)

{
a[j+1] = a[j];
j--;
}
a[j+1] = key;
}
return (0);
}
int main()


{

int a[10] =
{ 2 , 6 , 9 , 3 , 5 , 8 , 1 , 6 , 3 , 8 } ;
insertsort(a);
for(int i = 0; i<sizeof(a)/sizeof(int); i++)
cout<<a[i]<<'\t';
system("pause");
return(0);
}

但必需知道數組的長度,int(&a)[10]中的10必需說明!所以如果未知數組長度,必需先要求得!
再次受高手指點,使用模版解決了n傳遞的問題
template<class T,int n>
T insertsort(T (&a)[n])//防止了指針退化


{
T j=T();
T key=T();
for(int i=1; i<n; i++)

{
key = a[i];
j = i - 1;
while (a[j]>key && j>=0)

{
a[j+1] = a[j];
j--;
}
a[j+1] = key;
}
return T();
}
我要繼續努力ing,好多知識有待熟悉額