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

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