陣列中的單個整型元素與整型普通變數的本質區別

2021-10-10 20:44:02 字數 677 閱讀 1413

先上**

#include

using

namespace std;

void

arrfunc

(int a)

;void

normfunc

(int a)

;int

main()

;int b =5;

arrfunc

(a);

cout << a[0]

(b);

cout << b;

return0;

}void

arrfunc

(int a)

//對 陣列進行操作,函式並不返回任何值

void

normfunc

(int a)

//對普通變數進行操作,函式並不返回任何值

輸出結果

10

5

原因:陣列是指標的一種表現形式

對」指標型「變數的任何操作都是直接作用於相應位址,位址中的值會被直接改變

對普通變數的操作,只會在函式內部(區域性)有效,可以理解為是對整型普通變數b的臨時快取進行操作,函式結束後,快取被釋放,變數本身的值並不會改變(有點類似於python的切片)

整型陣列宣告與定義

當宣告陣列int arr 9 定義陣列,輸入資料截止到下標arr 6 系統自動給arr 7 arr 8 賦值為 任意值 int x 輸入資料 int i 0 記錄位數 int a 5 儲存逆序 int temp printf 輸入資料x scanf d x while x 100000 x 0 輸出...

指標與一維整型陣列

1 通常情況下,定義乙個陣列,int a 5 定義乙個指標,int p a a與p都表示 a 0 而 a表示的位址與a和p在數值上一樣 但a和 p都表示四位元組記憶體塊的位址 而 a表示整個陣列的位址,有20個位元組 p 1將位址值加4,而 a 1卻將位址值加20.那麼關於 a如何定義呢?即陣列指標...

無符號整型與有符號整型的比較

喵哥最近遇到乙個問題,比較兩個數的時候經常會出現很嚴重的bug,比如 unsigned int a 0 int b 2 if a b b 1 cout b endl 乍一看這段 輸出的應該是 2,0肯定不會小於 2嘛,但是事實上,b 1 這行 是會被執行的。如果大家對算術轉換比較熟悉的話,應該會想到...