陣列作為形參

gaopengtttt發表於2016-05-24
在函式傳遞值的過程中,一般都是值傳遞但是陣列確實傳遞的指標,這樣主要用於避免過多資料複製佔用過多的記憶體空間。
我們在設定函式的時候可以使用
 int puta(const int geta[],int s_a) 來避免原始陣列受到修改,
如此的話修改會報錯
input.cpp: In function ‘int puta(const int*, int)’:
input.cpp:49:11: error: assignment of read-only location ‘*(geta + ((sizetype)(((long unsigned int)i) * 4ul)))’
   geta[i] = ipu;
下面是一個相關的例子
這裡使用函式傳入值,同時檢測輸入的值是否合法


8 #include
  9 using namespace std;
 10 
 11 int puta(int *geta,int s_a);
 12 
 13 int main(void)
 14 {
 15     int geta[10];
 16 //  puta(geta,sizeof(geta)/sizeof(int));
 17     if(!(puta(geta,sizeof(geta)/sizeof(int))))
 18     {
 19         for(int i = 0;i<sizeof(geta) sizeof(int);i++)  20         {
 21             cout<<geta[i]<<endl;
 22         }
 23     }
 24     else
 25     {
 26         cout<<"error input!\n";
 27     }
 28 
 29 }
 30 
 31 int puta(int geta[],int s_a)
 32 {
 33     int i;
 34     int ipu;
 35     for(i=0;i<s_a;i++)
 36     {
 37         if(!(cin>>ipu)) //cin>>check ipu data is adjust return true else return flase
 38         {
 39             cin.clear(); //clear cin flag
 40             while(cin.get() !='\n') //clear stdout buffer
 41                 continue;
 42             cout<<"error input!\n";
 43             return 1;
 44         }
 45         else if (ipu<0)
 46         {
 47             return 1;
 48         }
 49         geta[i] = ipu;
 50     }
 51     return 0;
 52 }    
</s_a;i++)
</geta[i]<<endl;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2106201/,如需轉載,請註明出處,否則將追究法律責任。

相關文章