深入學習一下陣列
單元是依次相連線的。而且這多個變數必須單獨訪問,不可以一起訪問的。因為他們的位址彼此相連,所以使用指標
訪問這些變數就很容易了。
這個位址在編譯器中決定具體數值,具體數值和變數名繫結,變數型別決定了這個位址的延續長度。
3、陣列中幾個關鍵符號(a a[0] &a &a[0])的理解
(1)、a就是陣列名。a做左值時表示整個陣列的所有空間(10 * 4 = 40位元組),又因為c語言規定陣列操作時要獨
立單個操作,不能整體運算元組,所以a不能做左值;a做右值時表示陣列首元素(陣列的第乙個元素,也就是a[0])
的首位址(首位址就是起始位址,就是4個位元組中最開始第乙個位元組的位址)。a做右值等同於&a[0];
(2)、a[0]表示陣列的首元素,也就是陣列的第0個元素。做左值時表示陣列第0個元素對應的記憶體空間(連續4位元組);
做右值時表示陣列第0個元素的值(也就是陣列第0個元素對應的記憶體空間中儲存的那個數)
(3)、&a就是陣列名取位址,字面意思就是陣列的位址。&a不能做左值(&a實質是乙個常量,不是變數,因此不可以
賦值,所以自然不能做左值。);&a做右值時表示整個陣列的首位址。
(4)、&a[0]字面意思就是陣列第0個元素的首位址(的優先順序要高於&,所以a先和結合再取位址)。做左值時表示
陣列首元素對應的記憶體空間,做右值時表示陣列首元素的位址(首位址就是起始位址,就是4個位元組中最開始第乙個字
節的位址)。
做右值時&a[0]等同於a。
總結:(1)、&a和a做右值時的區別:&a是整個陣列的首位址,而a是陣列首元素的首位址。這兩個在數字上是相等的,但是
意義不相同。意義不同就會導致他們在參與運算的時候有不同的表現。
(2)、a和&a[0]做右值時意義和數值完全相同,完全可以相互替代。
(3)、&a是常量,不能做左值。
(4)、a做左值代表整個陣列所有空間,所以a不能做左值。
深入學習陣列
深入學習一下陣列 從記憶體角度來理解陣列 1 從內在角度講,陣列變數就是一次分配多個變數,而且這多個變數在記憶體中的儲存單元是次相連線的。2 我們分開定義多個變數 譬如inta,b,c,d 和一次定義乙個陣列 int a 4 這兩種定義方法相同點是都定義了4個int型變星,而且這4個變星都是獨立的單...
陣列的深入學習
在以前的學習中,對陣列的認識只是簡單的陣列形式,儲存數,但深入學習其實現機理,發現大有文章,下面簡單表述一下 一 陣列是乙個型別,這個從陣列的定義說起 陣列的定義有兩種方式 以int為例,1.int a 2.int a 第一種定義方法是很多人習慣的,主要是早期的影響,第二種方法才是最適合的定義方法,...
C語言深入學習一
之前學過c語言不過比較淺顯,好多功能都不知道為什麼是這麼得到的,機緣巧合之下,找到了關於c語言深入學習的資源。很是開心。今天就分享給大家。希望大家能有所收穫。c語言中的資料型別 主要分為整形,浮點型,字元型。其對應為int等,float等,char等。typedef 是給某種功能另外叫乙個名字。可以...