數組的概念
數組是有序的數據集合 屬於構造數據類型 要求足足中的每一個數據元素類型相同 維數可劃分爲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)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
指向數組元素的指針