字元陣列 指標,const

2021-10-09 04:10:16 字數 2259 閱讀 3285

一、字元陣列?

1、什麼是字元陣列?

在乙個陣列中,每個成員都是字元。

例如: char a[3];  -> 每乙個成員都是字元來的,所以組成乙個字串。

2、字元陣列的賦值?

char a[10] = ;  剩餘5個沒有賦值的成員都是十進位制0。  -> 等價於5個'\0'

char a[10] = ;              將字串"hello"直接賦值給陣列。

char a[10] = "hello";                與第2種寫法一樣的,{}可以省略。

思考題:

1)請問"char a[10] = 與int a[10] = "有什麼區別?

char a[10] =  -> 其實10086這幾個數字是一些字元來的,等價於 char a[10] =

char a[10] = ;

int a[10] =  -> 其實10086這幾個數字是十進位制陣列來的。 等價於 int a[10] = ;

2)請問能不能這樣寫?

int a[10] = "10086";    -> 不可以將乙個字串直接賦值給乙個整型陣列。

(因為字串在記憶體中是乙個位址來的,所以不能將乙個位址賦值給乙個整型陣列)

int a[10] = ;   -> 正確,等價於 int a[10] = ;

3、從記憶體角度分析以下的問題。

char a[10] = ;

與char a[10] = ;

前者是從常量區將hello這5個字元拷貝到棧區陣列中,然後系統就會補5個數字0,等價於字元'\0'。

後者是從常量區中將hello這個字串拷貝到棧區陣列中,然後字串預設帶乙個'\0'在後面的,所以一共拷貝了6個字元到陣列中,然後系統就會補4個數字0,等價於'\0'。

二、字元指標。

1、什麼是字元指標?

指向乙個字元變數的位址就是字元指標。

例子:int a;

int *pa = &a;  -> pa就是乙個整型指標,這個指標指向整型變數a的。

char b;

char *pb = &b; -> pb就是乙個字元指標,這個指標指向字元變數b的。

2、有時候,我們會看到乙個字串賦值給乙個字元指標?

char *p = "helloworld";   -> 正確

問題: 究竟字元指標是指向乙個字元,還是乙個字串?

字元指標永遠都是指向乙個字元的,不可能指向乙個字串的,在這個例子中,指標p其實是存放在"helloworld"字串第乙個元素'h'的位址。

3、關於字元陣列與字元指標需要注意的問題。

1)每乙個字串都是屬於常量區的資料,而且字串在常量區中往往是以'\0'作為結束標誌。

拷貝常量區的字串時,是連'\0'一起拷貝。

2)常常會看到程式都是用這兩種辦法來儲存字串,那麼它們有什麼區別?

char a[10] = "hello";

char *p = "hello";

char a[10] = "hello";

在記憶體棧區中連續申請10個位元組,然後使用變數a間接訪問這片記憶體空間,將常量區中的"hello"這個字串拷貝到變數a代表的這片記憶體空間。

char *p = "hello";

在記憶體棧區中連續申請8個位元組,然後使用變數p間接訪問這片記憶體空間,然後將常量區中的"hello"字串中的第乙個字元'h'的位址賦值給p對應的空間上。

3)%s   -> 輸出乙個字串。

輸出原則:

給定乙個位址,判斷該位址上的字元是不是'\0'

如果不是'\0',則列印該字元,並且將位址往後挪動乙個單位,再繼續判斷。

如果是'\0',則結束列印。

完成14/16/17題。

2、const使用場景。

const大多數都是用於修飾乙個指標,很少會去修飾乙個變數。

一般都是出現在函式的形式引數中。

3、舉例子。

例子1: 

不使用const的情況:

#include

int fun(int x) //x = age

int main(int argc,char *ar**)

使用const的情況:

#include

int fun(const int x) //x可以賦值一次值,但是賦值了之後,就不能通過x去修改x的值。

int main(int argc,char *ar**)

例子2: 

#include

int main(int argc,char *ar**)

C 指標 const 陣列 引用

禁止改寫指標 常量指標或常指標 int x 0 int const pint x 存放位址的變數pint不可變,但pint可指向其他變數,x的值可變。禁止改寫間接引用 int x 5 const int pint x pint中存放的位址可以變,但x的值不可變。既禁止改寫指標,又禁止改寫間接引用 i...

C語言指標與字串,指標與陣列,const修飾符

01 指標與字串 include 1 使用字元陣列來儲存的字串是儲存棧裡的,儲存棧裡面東西是可讀可寫,所有我們可以改變裡面的字元 當把乙個字串常量賦值乙個字元陣列的時候,那麼它會把字串常量中的沒有字元都放到字元陣列裡面 2 使用字元指標來儲存字串,它儲存的是字串常量位址,常量區是唯讀的,所以我們不可...

c 指標 陣列 陣列指標以及const限定符

今天被指向字串陣列的指標怎麼寫給搞懵了,索性花點時間把一堆指標給梳理了一下。從最簡單的開始,指向變數和陣列的指標。注釋裡常指標代表指標本身是常量 網上有各種不同的說法所以我直接用了自己習慣的叫法 單一指標 int a 1 int b 2 const int c 3 int p1 a 指向變數的變指標...