以前写过一篇关于数组长度的文章,经过某位好友的指点,知道了新的解决方法了

/**//*******************************************
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,好多知识有待熟悉额