5.數組與指針

數組的概念

數組是有序的數據集合  屬於構造數據類型 要求足足中的每一個數據元素類型相同  維數可劃分爲1維和多維數組

一維數組

在物理空間分配上 系統在內存中爲一維數組分配一段連續的空間

定義  類型說明符 數組名 [常量表達式]

對於數組類型說明要注意一下幾點:

1.數組的類型實際上是指數組原屬的取值類型。同一個數組的所有元素的數據類型都是相同的。

2.在編寫程序時,數組名的書寫規則應符合標識符的書寫規定。

3.編寫程序時,數組名不能與其他變量名相同。

4.方括號中常量的表達式表示數組元素的個數。

5.不能再方括號中用遍了來表示元素的個數。

一維數組的元素  數組名[下標]  從0開始  a[5]爲第6個元素

注意一點 在c語言中只能一個一個的引用數組變量 而不能一次引用整個數組

定義數組時不能再方括號中用變量來表示元素的個數,但可以是符號常數或常量表達式。而引用數組元素時,方括號中既可以是常量、常量表達式、字符常數、又可以是變量、不過變量的值一定是確定的。

一維數組的初始化

1.可以只對數組元素部分初始化  int a[10]={1,3,5}

2.數組的一次性賦0  int a[10]={0}

3.可以不指定數組長度  int a[]={1,2,3,4,5}

二維數組

定義 類型說明符 數組名[常量表達式1][常量表達式2]

二維數組的初始化

1.按行分段賦值

2.按行連續賦值

對二維數組進行初始化時有以下幾點需要注意:

1.可以對部分元素賦初值 未賦初值的元素自動取0

2.如果對全部元素賦初值,則第一維的長度可以不給出 int a[][3]={1,2,3,4,5,6,7,8,9}

指針的概念

使用指針可以表示複雜的數據結構 不需要命名就能夠動態分配內存 還可以直接處理內存地址

內存的地址

內存單元的編號叫做內存的地址

內存是一個連續的物理空間 被劃分爲大小相等的內存單元 沒個內存單元都分配一個固定的內存地址 內存地址也是連續的

程序中給出的地址往往只是內存的邏輯地址 還要通過操作系統的內存管理機制將邏輯地址映射爲物理地址

指針和指針變量

指針就是內存的地址  是地址 是內存單元的編號  而內存單元的內容是存放在內存單元中的具體數據

C語言中可以用一個變量來存放指針(內存地址) 這種變量叫做指針變量  只是內存地址而已~~

嚴格區分 變量  變量的指針 變量的內容 指針變量 指針變量的內容=是地址

指針型變量的定義

1.指針類型說明 即定義該變量爲一個指針變量 用*說明

2.指針變量名

3.指針變量的類型

一般類型  類型說明符 *指針變量名

指針型變量的引用

引用的方法  int *ptr,i;ptr=&i;將i的指針&i賦值給指針變量ptr

*叫做指針運算符 作用有2點:一是定義指針變量時作指針類型說明 表明定義的變量時指針型變量

二是用於直接訪問指針變量所指向的內存單元

1.指針變量初始化方法

int a;

int *p=&a;這裏一定要有*

在定義指針型變量p的同時將整形變量a的地址&a賦值給p

2.賦值語句的方法

int a;

int *p;

p=&a;

使用指針變量時 咬住運算符& 和*的使用順序 順序不同 所表達的意思也可能不同 他們優先級相同 自右而左結合

int *p,i=1,*q;

p=&i;

q=&*p;  //=&i=i的地址

int i=2,j;

j=*&i;  //吧i的內容賦值給j

指針作爲函數參數

引入  實參-->形參  只是值傳遞  子函數中形參值的變量不影響主函數中實參的值!!

指針變量的函數參數 

作用是將一個變量的地址傳遞給被調函數 這樣就可以在被調函數中通過指針(地址)操縱主調函數中的變量了

被調函數定義的參數表列中參數一定是定義指針變量的形式 即形參一定是定義指針變量的形式

void swap(int *a,int *b)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

指向數組元素的指針

發佈了23 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章