19 11 10 C 基礎語言四

2021-10-02 22:24:44 字數 1972 閱讀 2639

上一節,我主要介紹了標準庫的使用,這節我主要是對陣列指標進行做出一些總結發表一些看法;

一:陣列

​ 陣列是由型別名,識別符號和維陣列組成的符合資料型別,型別名還規定了存放在陣列中的元素的型別,而維數則指定陣列中包含的元素個數;

陣列的定義和初始化:

/*這是個一維陣列*/

int a[2] //中的數必須用大於等於1的常量表示,如果沒有將會變成乙個無效的陣列;

a =

/*這是個二維陣列*/

int b[3][4] //同樣,在二維陣列中兩個也必須是const;

b = ,,};

注意在初始化過程分為顯示賦值和隱式賦值,這兩種賦值的不同點同上,沒有賦初始值的是隱性賦值,表示只是在記憶體中通過初始的型別開闢相應大小的記憶體,而顯示賦值除了將開闢一塊相應的記憶體區域,還將花括號的值放入到相應的記憶體中;

注意:陣列的賦值不支援將乙個陣列賦值給另乙個陣列;

陣列的操作:

​ 與vector一樣陣列的操作是通過下標來表示的,訪問陣列是從0開始計數,在用下標訪問元素時,vector使用vector::siize_type作為下標的型別,而陣列下標的正確型別是size_t;

注意:在使用陣列時最常見的是陣列下標越界的;所以在使用的時候要注意陣列下標的問題;

二:指標:

​ 指標是指向某種型別物件的復合資料型別,是用於陣列的迭代器:指向陣列的乙個元素,在指向陣列的元素上使用解引用操作符 * 和自增加操作符++ 與在迭代器上的用法類似;對指標進行解引用的操作,可獲得該指標的所指物件的值,而指標做自增操作時,則移動指標指向陣列的下乙個元素;

char a = 'hello world';

char *b = &a; //定義了乙個指向char型別的指標b,並初始化b使其指向char型別的物件 a;

指標定義和初始化:

需要分清什麼是指標型別什麼是指標所指向的型別:

char *p;			//指標的型別是char*    指標所指向的型行是char

char **p; //指標型別是char** 指標所指向的型別是char*

char (*p)[3]; //指標型別是char(*)[3] 指標所指向的型別是int()[3]

char *(*ptr)[4]; //指標型別是char *(*)[4] 指標所指向的型別是char *()[4]

​ 指標可能的取值:

指標使用:

指標和引用的比較:雖然指標都是指向另乙個值,但是,引用不會修改被引用的內容,而修改指標就相當於修改了被指向的內容;

​ 多級指標:

​ 在c中有多級指標的概念就是在指標的基礎上,在定義乙個指標,指向另乙個指標的位址,這樣二級指標所對應的值就是一級指標所指向的值(注意,這裡二級指標不是直接指向值的而是通過一級指標指向值的);

const和指標:

const double p = 3.14;

double *pi = &p; //錯誤

const double *pi = &p; //正確,因為定義的const型別的指標必須是const型別的位址才可以;

指標和typedef:
typedef string *pstring;

const pstring cstr;

上面定義的typedef很容易讓人搞錯,因為typedef不是普通的文字擴充套件,很多人以為上面的內容是:

const string * cstr; 其實不是,*正確的因該是: string const cstr;

三:總結:

​ 以上就是我對陣列指標的理解;下面會對表示式和異常進行總結學習,如果您發現有什麼不對的地方歡迎給我批評指正,謝謝~

e-mail:[email protected] 王晨晨

C語言基礎(四)

指標的指標 int a 1 int p a int q p 命令列引數 argc 命令列引數個數 1 包括檔名本身 argv 命令列引數的指標陣列 int main char argc char argv 結構體型別 聲名結構體型別的一般形式 struct 結構體名 如 struct student...

C語言基礎(四)

一 一維陣列 1 陣列的定義 格式 資料型別 陣列名 元素個數 1 下標 用來表示陣列中的某乙個元素 arr 1 代表陣列的第二個元素 注意 下標第乙個是0,最後乙個是元素個數 1 2 陣列下標越界 超出了陣列元素個數的下標,如果操作越界資料會出現程式錯誤 亂碼結果 報錯2.求出陣列元素個數 siz...

C語言基礎篇 四

include include include 函式的宣告 void changesalar int x void changearray int arr 5 int main int argc,const char argv 基本資料型別陣列 int array1 4 int array2 int...