c語言 陣列學習總結(3)

2021-09-24 06:08:30 字數 1086 閱讀 3461

函式、陣列和指標

指標操作

如果有 int a[5];

則 a和&a[0]都表示陣列首元素a[0]的首位址。(指向首元素)

而&a則表示陣列的首位址。(指向整個陣列)

結合左值右值去理解(前提是 int a[10])

(1)a不能做左值(因為陣列在初始化之後就不能進行整體操作了),做右值表示首元素的首位址等同於&a[0]

(2)a[0]做左值時表示陣列第0個元素對應的記憶體空間;做右值時表示陣列第0個元素的值

(3)&a不能做左值;&a做右值時表示整個陣列的首位址。

(4)&a[0]不能做左值,做右值時表示首元素的首位址等同於a。

dates+2==&date[2]; //相同的位址

*(dates+2)==dates[2]; //相同的值

以上表明可以的使用指標標識陣列的元素和獲得元素的值。

定義ar[n]的意思是*(ar+n),可以認為*(ar+n)的意思是「到記憶體的ar位置,然後移動n個單元,檢索儲存在那裡的值」。

==另外,還要區別*(dates+2)和*dates+

*( dates+2)       //dates的第三個元素的值。

*dates+2 //dates的第乙個元素的值加2,相當於(*dates)+2。

int sun(int *ar,int n);

int sun(int *,int n);

int sun(int ar,int n);

int sun(int ,int n);

但是在函式定義中不能省引數名,下面兩種形式等價:

int sum(int *ar,int n)

int sum(int arint n)

指標與整數相加:ar+4=&ar[4]

注:千萬不要解引用未初始化的指標!!!

如:

int * pt;   //未初始化的指標

*pt=5; //嚴重的錯誤

原因:pt未被初始化,5不知道將被儲存在何處。

C語言總結3 陣列

1.陣列沒有初始化時,裡面儲存的內容是亂碼的 陣列只能整體被初始化,不能被整體賦值.include include int main char arr2 abc int arr3 將陣列初始化為0 printf d n sizeof arr1 3 printf d n sizeof arr2 4 s...

c語言 陣列學習總結(1)

陣列 array 就是一些列具有相同型別的資料的集合。c語言陣列屬於構造資料型別。乙個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列 字元陣列 指標陣列 結構陣列等各種類別。陣列的定義 datatype arrayname le...

C語言總結(3)

1.printf列印函式 1 d 按照十進位制整型數列印 2 6d 按照十進位制整型數列印,至少 6 個字元寬 3 f 按照浮點數列印 4 6f 按照浮點數列印,至少 6 個字元寬 5 2f 按照浮點數列印,小數點後有兩位小數 6 6.2f 按照浮點數列印,至少 6 個字元寬,小數點後有兩位小數 此...