《c語言從入門到精通》看書筆記 第10章 指標

2021-07-07 08:27:46 字數 1690 閱讀 2340

1、位址與指標

變數的位址稱為該變數的「指標」。

如果乙個變數專門來存放另乙個變數的位址,它就是指標變數。在c語言中專門用來存放記憶體單元位址的變數型別即指標型別。

2、指標變數:

(1)指標變數的一般形式:

型別說明*變數名     ;其中「*」表示該變數是乙個指標變數,變數名即為定義的指標變數名,型別說明便是本指標變數所指向的變數的資料型別。

一般形式為:

&變數名;     

兩種方法:

1)定義指標變數的同時就進行賦值,例如:int a; int *p=&a;

2)先定義指標變數之後再賦值,例如:int a; int *p; p=&a;

如果先定義完指標變數之後再賦值注意不要加「*」;

(3)指標變數的引用:引用指標變數是對變數進行簡介訪問的一種形式。

對指標變數的引用形式如:

*指標變數;其含義是引用指標變數所指向的值。

(4)"&"和"*"運算子

運算子「&」乙個返回運算元位址的單目運算子,叫做取位址運算子;

運算子「*」是單目運算子,叫做指標運算子,作用是返回指定位址內的變數的值。

(5)「&*」和「*&」的區別

「&」和「*」的運算子優先級別相同,按

自右向左的方向結合。

例如:int a;

p=&a;

"&*p"就是先進行「*」運算,即「*p」相當於變數a;再進行「&」運算,就是說,「&*p」是取a的位址。同理「*&a」就是取變數a所在位址的值,就是變數a;

3、一維陣列與指標

當定義乙個一位陣列時,系統會在記憶體中為該陣列分配乙個儲存空間,其陣列名稱就是陣列在記憶體中的首位址,若再定義乙個指標變數,並將陣列的首位址傳給指標變數,則該指標就指向了這個一維陣列。

4、二維陣列與指標

(1)&a[0][0]既可以看作陣列0行0列的首位址,也可以看做二維陣列的首位址。&a[m][n]就是第m行n列元素的位址。

(2)a[0]+n表示第0行第n個元素的位址

5、字串與指標:

訪問乙個字串有兩種方式,一是使用字元陣列來存放乙個字串,從而實現對字串的操作;二是使用字元指標指向乙個字串,此時可不定義陣列。

6、字串陣列

字元陣列是乙個一維陣列,而字串陣列是以字串作為陣列元素的陣列,可以將其看成乙個二維字元陣列。

例如:char country[5][20]=

字元型陣列變數country被定義為含有5個字串的陣列,每個字串的長度要小於20(這裡要考慮字串最後的\0)。但這樣浪費空間。但是用指標陣列就好,不會浪費空間。

指標陣列:乙個陣列,其元素均為指標型別資料,稱為指標陣列。也就是說,指標陣列中的每乙個元素都相當於乙個指標變數。

例如:int i;

char *month=

;7、指向指標的指標

指向指標的指標變數定義如下:

型別識別符號 **指標變數名;例如:int **p;

其含義為定義乙個指標變數p,它指向另乙個指標變數,該指標變數又指向另乙個基本整型變數。由於指標變數運算子*是自右自左結合,相當於:int *(*p);

8、c語言中實參變數和形參變數之間的資料傳遞是單向的「只傳送」方式。指標變數做函式引數也是如此,呼叫函式不可能改變實參指標變數的值,但可以改變實參指標變數所指變數的值。

9、引數字串的長度是不定的,並且引數字串的長度不需要統一,且引數的數目也是任意的,並不規定具體個數。

《c語言從入門到精通》看書筆記 第9章 函式

1 函式的定義 函式頭 函式體,一般形式為 返回值型別 函式名 引數列表 2 函式的宣告 返回值型別 函式名 引數列表 3 返回語句 1 返回語句的作用 1 利用返回語句能立即從所在的函式中退出,即返回到呼叫的程式中去 2 返回語句能返回值。將函式值賦給呼叫的表示式中,當然有些函式沒用返回值。2 函...

《c語言從入門到精通》看書筆記 第14章 檔案

1 檔案的基本操作 1 檔案指標 檔案指標是指向檔案有關資訊的指標,這些資訊包含檔名,狀態,和當前位置,他們儲存在乙個結構體變數中。在使用檔案時需要在記憶體中為其分配空間,用以存放檔案的基本資訊。該檔案是由系統定義的,c語言規定該型別為file型,宣告如下 typedef struct file 在...

《c語言從入門到精通》看書筆記 第13章 預處理

1 巨集定義 巨集定義是預處理命令的一種,它提供了一種可以替換源 中字串的機制。巨集定義指令 define用來定義乙個識別符號和乙個字串,一這個識別符號來代表這個字串,在程式中每次遇到該識別符號時就用所定義的字串替換它。巨集定義的作用相當於給指定的字串起乙個別名。1 不帶引數的巨集定義一般形式如下 ...