以前写过一篇关于数组长度的文章,经过某位好友的指点,知道了新的解决方法了
/**//*******************************************
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,好多知识有待熟悉额