Ⅰ 超簡單的c語言問題
將此段拆開,你會發現pc是char* const類型的,而不是char類型的。
正確的char類型應該寫為char pc。
如果你學了字元數組知識的話你會比較好理解下面這些:
const的意義表示不可更改的,是一種修飾詞,可以放在類型的前面或者後面,一般是用來修飾指針類型的也就是帶'*'的類型(比如char*、int*等)。
關於指針:老師們經常讓我把它當門牌號,我當時就是不開竅聽不懂,後來看多了,自己試驗也就明白了。
指針不同於一般類型,如int、char、bool, 但它卻又和這些類型分不開,它裡面的內容不是數據,比如int類型里有231、char里有'b'、bool里有false...而指針就是這些數據多了個星號'*',而它的內容是存放這些類型的地址。
地址是啥?舉個例子:
int Num = 1000;
int* p;
p = &Num;
好,現在p里就是Num的地址了,你用*p和直接用Num的效果一樣。
解釋一下:&運算符在這里是取址運算符,顧名思義,就是獲取地址的功能
*為引用運算符(好像不叫這個,不過忘記了), 就是通過裡面的地址去使用數據的功能
畫的有點亂請原諒
每個數據都有地址,無論是定義的變數Num還是字面值"hello"、1233123等都有唯一的地址,通過這些地址用於訪問這些值,大多用於數組或者函數調用里。(字面值默認是不可更改的,也就是const修飾詞)
註:int* p和int *p或者int * p都是同一個東西,你喜歡哪種寫法都可以。使用的時候用*p,賦值除了說的種還有int* p = &Num;
小知識:char*是一個指向字元串(第一個字元)的指針,而字面值"xxxxx"實際就是一個地址(第一個字元的地址),所以直接賦值了。
拓展:const在類型的前面表示使用這個指針的時候,不能*p=...,但可以Num=...,就是不能通過這個指針更改指向數據的內容
const在類型後面的時候表示不能更改這個指針裡面的地址,不能int* p = &a然後p=&b,在b這會報錯