數組不可用引用? 經在程序中證實,數組不用引用也可返回修改后的數組。由此可見,數組的生存期是從一開始直到整個程序運行結束。下面是一個我寫的程序,已運行ok.# include<iostream.h>const int n=6, i=3;int fun1(int b[], int n);void main(){ int a[n]; cout<<"provide value to a[n]."<<endl; //給數組賦值 for(int i=0; i<n; i++) cin>>a[i]; cout<<"now a[] is:"<<endl; //輸出修改前的數組 for(int k=0; k<n; k++) cout<<a[k]<<" "; cout<<endl; int s=fun1(a, n); cout<<"deleted value is:"<<s<<endl;//輸出被刪除的值 cout<<"now a[] is:"<<endl; //輸出修改后的數組 for(k=0; k<n; k++) cout<<a[k]<<" "; cout<<endl;}int fun1( int b[], int n) //修改數組{ int s=b[i]; for(int j=i; j<n; j++) b[j]=b[j+1]; return s;}
熱心網友
數組名其實就是一個指向數組第一個元素的指針,用數組名作參數就是傳遞地址,所以可以改變數組的值。
熱心網友
C/C++規定:數組名代表數組的首地址。如回答者:toneh 所說,數組名代表了數組的第一個元素的地址,也就是一個指向數組首地址的指針。因此:int *p;int a[10];p=&a[0];則,p 和 a 都指向了 a[0] 地址,我們可以用輸出它們的值來看到這一點: cout << a << endl; cout << p << endl;可以看到,輸出的是統一的地址。注意數組a 不代表整個數組,上面的“p=&a[0]"的作用是把a數組的首地址賦值給p,而不是把數組a各元素的值賦給p但是應該注意的是,指針變量p是可以實現本身的值的改變,如:p++,但是a是數組名,他的值在程序運行期間是固定不變的,是常量,是不能進行 形如 a++的運算的。在你的代碼中,傳給fun1的是數組名,所以可以看作傳入的是一個常量指針,所以能夠改變數組中元素的值。對于評論者:elva6401 所說的,可能他沒有看到程序頂部定義的常量。但是也可以看出你寫的代碼不太規范。程序中用到了很多n,i,為什么不取一個有點意義的名字呢?。
熱心網友
這樣做當然可以