一、字元陣列?
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 指向變數的變指標...