放假的時候再繼續重新自學c++。今天看到函式和陣列
c++中,在函式中陣列引數對應的都是指標。重點在於:其一講陣列位址作為引數可以節省複製整個陣列的時間和記憶體(只要傳遞乙個陣列頭的位址),如果陣列很大,使用拷貝的系統開銷(空間以及時間)非常大。其二:使用原始資料增加了破壞陣列的風險(書上看的,不是很理解)。
接下來想說下自己對陣列函式的理解:
#include
using namespace std;
const int arrlength=8;
int *number(int *arr,int n);
int main()
;cout<<"put into a int which is bigger than -1 and small than 8"<>n;
while(n<-1||n>7)
number=number(arr,n);
cout<<"the number is:";
cout<<*number;//cout<<*number(arr,n);
int_numbe=*number(arr,n);
cout<<"the number is:";
cout<
cin.get();
cin.get();
return 0;
}int *number(int *arr,int n)
輸入2;輸出:4343***x(乙個比較大的數字),4(需要的數值);
再針對紅色**來看,為什麼輸出的是乙個比較大的數字,而紅色部分注釋部分依然可以輸出4這個需要的答案。
number是乙個int指標,number=number(arr,n);個人認為number的確指向函式正確運算之後的4所指向的那塊位址。 可是函式結束之後,系統將函式中的4的值delete掉了,所以在之後輸出階段cout<<*number;number依然指向那塊位址,而對應位址所在的值已經被系統重新非配了。這就是為什麼cout<<*number(arr,n);可以正確輸出的原因
還有對於目前簡單的陣列指標來說,這裡有2個恒等式:(arr陣列,ar是對應的陣列指標)
arr[i]==*(ar+i); //值
&arr[i]==ar+i; //位址
C 建構函式和陣列
建構函式和陣列 include using namespace std 是乙個語句 class ctest 建構函式 1 ctest int n,int m 建構函式 2 ctest 建構函式 3 intmain 三個元素分別用建構函式 1 2 3 初始化 cout array1 3 ended e...
陣列和陣列函式
1 如果對全部元素賦初值 即提供全部初始資料 則定義陣列時對第一維的長度可以不指定,但第二維的長度不能省。2.gets 字元陣列 1 格式 gets 字元陣列名 2 作用 從終端輸入乙個字串到字元陣列,並且得 到乙個函式值。該函式值是字元陣列的首位址。gets函式這裡注意 如果和scanf s k ...
PHP陣列和陣列函式
陣列 array 能在乙個單獨的變數中儲存乙個或多個值,php中的陣列型別分為三類 索引陣列 陣列下標是數字索引,可以用索引訪問該陣列元素 關聯陣列 帶有鍵值和鍵名,可以通過鍵名訪問鍵值 多維陣列 陣列中包含陣列,指數組的巢狀 php中陣列的建立用關鍵字array 定義乙個索引陣列,索引陣列的索引從...