C基礎課程筆記總結7 指標2 指標與字串陣列

2021-07-02 04:39:08 字數 1996 閱讀 2035

指標2:指標與字串陣列

在oc中,指標與字串陣列的應用是真正需要掌握的知識點。

定義乙個字串,一般是通過定義乙個字元陣列來接收這個字串,例如: char a="it';輸出字串可以這樣操作: printf(「%s\n」,a)用%s來表示字串,並且s檢測的是對應的位址,然後輸出該位址儲存的值,而不是直接輸出值,因此可以直接寫對應字元陣列名即可。

還有一種定義方法是用字元指標變數來定義乙個字串,例如:char *p="it";,此時,指標變數p的值只是指向了字元『i』而已,即指向首字元的位址。而用指標定義字串,只能在宣告指標的同時定義字串,在宣告之後定義字串會產生錯誤。

然而,這兩種定義字串的方法是完全不同的,

在c中,記憶體分為5個大塊,1:常量區;2:堆;3:棧;4:?;5:?;

1:常量區:用於存放常量,常量去的變數值只能寫入一次,之後不可更改,並且還會快取起來,再次用到該常量時,還會返回同乙個值。

2:堆:用於存放物件。

3:棧:用於存放區域性變數,變數的值可以自由改動。

陣列存放在棧記憶體中,因此,用陣列定義的字串存放在棧記憶體中,可以隨意更改,而用指標定義的字串存放在常量區中,不可更改。

對於經常使用但是無需更改的字串可以用指標定義,可以節省記憶體空間提高效能,因為頻繁的開闢和消除記憶體空間是非常消耗效能的,而需要改動的字串必須用陣列定義

指標陣列,陣列中所儲存的元素都是指標變數,定義指標陣列和定義一般陣列都是一樣的: 資料型別 +陣列名,而指標的資料型別 是指向型別+*號,如下

char *point[100];

即定義了乙個指標陣列,而指標是可以定義字串的,因此指標陣列中的元素可以直接寫成:

char *p=

陣列中的每乙個指標都指向了乙個常量的字串,但要注意的是,輸出其中的字串內容是,在陣列名前不用在加上*號,直接寫陣列名加下標即可輸出對應字串,如

p[0]=abc,

因為在指標陣列中,存放的元素就是指標,不用再次說明,因此在輸出時,並不用再加上「*」號

如果寫成:*p[0]的話,會發生錯誤。因為對於指標陣列而言,每個元素的都是指標

對於需要改變的字串陣列,可以用普通的二維陣列定義法來定義,例如

char name[3][20],

該字元二維陣列可以存放3個字串,每個字串最多能有20個字元。

字串的輸入:對於字串的輸入,系統不能提前知道使用者將輸入多少個字元,只能規定最大輸入字元個數,因此,使用者輸入的字串是可變的,必須用字元陣列定義。

首先定義乙個字元陣列,

char a[2]

表示這個陣列可以有兩個字串,並不是說每個字串只能有兩個字元

然後用scanf函式進行輸入,使用scanf函式,系統會自動在最後乙個字元之後加上字串結束符「\0」,scanf也不限制輸入,但是輸出有限制。.

而使用gets()函式,則會不限制輸入的字元個數,儘管在定義陣列時有限制,但是在實際輸入中,不論輸入多少都能顯示,並且也會自動加\0.

但在實際使用中,多用gets()

指標與函式:

1.返回指標的函式

函式都可以有返回值,因此也可以返回乙個指標變數,返回型別在寫在函式名之前,例如 int function(),所以,返回指標的函式寫為

char *function(),

其中 char * 表示返回的型別,是乙個指標,指標即指向位址,所以返回的實際是乙個位址值。

2.指向函式的指標:

指標能夠指向函式,說明函式也有自己的位址值,因為函式是放在記憶體中的方法區中,這個知識點在oc中不常使用。

宣告函式指標的固定格式:

所指向函式的返回型別 (×p)(所指向函式的引數,引數變數名不寫),p表示指標變數名,可以任意取名,(*p)括號表示這個指標是指向乙個函式的指標,其實就是把函式名換成(*p)

賦值格式:

p=所指向的函式名;不用寫函式的引數

和陣列一樣,陣列名即位址,函式名也是位址

呼叫函式指標的方式:

(*p)(函式引數)=p(函式引數)=function(函式引數);

也和陣列類似。

c語言基礎2指標

指標的詳解 指標的定是 int a b 1 a b 可以看出來,a這個指標變數存的是b的位址。可以變形為int a b d 表示訪問位置100,並取得裡面的值。乙個常見的錯誤,int a a 12 但是a究竟指向 呢,由於我們沒有對a進行初始化,所以我們沒有辦法 12這個值究竟存在 如果變數是靜態的...

C 基礎總結 4 指標

指標是乙個變數,其儲存的值是位址,而不是值本身。有點類似於組成原理裡面的變址定址 在討論指標之前,我們先來看看如何尋找常規變數的位址。只需對變數引用取位址符 就行了。如下面一段 duck變數為int型變數,其分配的位址是1000,裡面儲存的值是12,而birding是乙個int型指標變數它本身的位址...

C 入門 2 指標

電腦程式在儲存資料時必須跟蹤以下3個屬性 include int main 輸出如下,顯示位址時,該實現的cout使用十六進製制法,因為這時常用於描述記憶體的表示法。a value 6 anda address is 0x7ffedf68996c b value 4.5 and b address ...