重學c 函式和陣列

2021-06-03 08:07:27 字數 1117 閱讀 2535

放假的時候再繼續重新自學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 定義乙個索引陣列,索引陣列的索引從...