c語言中怎麼理解字串常量給出的是位址值

2021-09-02 07:17:49 字數 3000 閱讀 4370

1樓:匿名使用者

c中字串實際上是字元陣列,通過指標位址來操作,所以其實定義的是指標

2樓:visr_午夜

給出字串的定義:

字串是以空字元結尾的char型陣列

再給出字串常量的定義:

字串常量又稱為字串文字,是指位於一對雙引號中的任何字元。雙引號裡面的字元加上編譯器自動提供的結束標誌\0字元,作為乙個字串被存在陣列當中。

那麼怎麼理解「字串常量給出的是位址值」呢?

看到這裡就要知道在呼叫乙個陣列的時候,一般是給出這個陣列的首元素的位址值,陣列a的首元素的位址值&a[0]就是我們首先得到的乙個陣列的呼叫的值。那麼上面也說過了,字串常量作為乙個陣列,被儲存在記憶體中,記憶體是按位址來分配空間的,當呼叫乙個字串常量的時候,就會得到這個字串它的位址值。也就是這個意思。

c語言中字元常量與字串常量有什麼區別?

3樓:小哥

字元常量:在c語言中乙個字元常量代表ascii字符集中的乙個字元,在程式中用單引號把乙個字元括起來作為字元常量。大小寫字母代表不同的字常量;單引號中的空格也是;字元常量只能包含乙個字元;字元常量只能用但括號括起來。

下面是常用字元的sacii

'a』--'z' 97------122'a』--'z' 65-------90'0'---'9' 48-------57字串常量:字串常量是用雙引號括起來的,在c語言中系統會在每個字串的最後自動加入乙個'\0'作為字串的結束標誌。

區別:'z'是字元常量,佔乙個位元組;"z"是字串常量,佔兩個位元組,其中乙個放'\0'。

它們兩個的用法都明白了,區別就知道了

4樓:壬存邵代雙

字元常量是乙個字元,如'a','4','\0','\b','\142'等等,字串常量可以是乙個字元"n",也可以沒有字元('\0'),更多的是多個字元。

作為字元常量,二者間沒有區別,在c++中,為了方便,將字串定義成乙個類string,但用char

*說明和定義的串常量仍然是一樣的,沒有任何區別。

5樓:like—耳機

首先,它們都是常量,所以不可以被改值。

字元常量永遠是乙個個體,也就是它只是乙個字元而已。

而字串常量是乙個群體,就像人們說的一句話,字串常量中是由若干個字元常量構成的,當然可以沒有,不過系統會給其加乙個『\0』,至於為什麼要加,找d.m.ritchie。

就像人們說的話一樣,字元常量是單詞,而每一句話的後面都要加上句號,表示這句話說完了,這個大概是『\0』擬人的乙個作用吧,我這麼認為。

另外字元常量其實對於計算機來說是乙個二進位製數,也就是它是乙個數值,所以你可以對乙個字元常量來進行邏輯運算,比如『b』 - 『a』 = 1。

字串常量是話語,作為條件的判斷以及顯示器輸出的物件。

祝你好運~

6樓:匿名使用者

字元常量可以用%c的格式或putchar函式輸出,字串常量不可以,另外在記憶體中佔得位元組不一樣

7樓:微雨31初霽

字元常量是乙個字元,在程式中字元是用單引號括起來的。字元常量由0個或若干個字元組合而成,在程式中字串是用雙引號括起來的,在儲存時系統自動在字串最後麵加乙個結束符"\0"

8樓:月光下的日軍

都是常量,不能修改,區別是字元常量是乙個字元,用『 』單引號,而字串常量用雙引號,如「a」,雖然是乙個字元,但他是字串常量。

c語言中,為什麼字串可以賦值給字元指標變數

9樓:匿名使用者

在c語言中並沒有bai

字串這個型別

du。所說的字zhi符串就是字元dao陣列。也就是char型別版的陣列。

與普通陣列不同的,權字串必須以'\0'作為結束符。

而在c語言中,型別為t的一維陣列,其首位址等效於該型別的一維指標,即t*型。

於是字串,也就是字元陣列,首位址就可以當做char *型使用了。

事實上,在庫函式以及大多數使用到字串作為引數的函式中,其引數都是char *型的。

10樓:路圖元

p="abcd"; //這句話的意思是把字串的首位址賦給p!

11樓:匿名使用者

單引號和雙引號,賦值的時候這個應該有講究吧!具體忘了,幾年沒去看了。

12樓:土杜土杜

p = "abcd"; 編譯器會將字串"abcd"的位址放到指標變數p中。p存放的是它的位址,不是值。

13樓:棄嬰

字串常量賦值給指標變數應該就是把它的首位址賦給指標變數吧 。

14樓:五轉故劍情深

1. 'a'是字元

常量,bai"a"是字元字面量,乙個du加zhi單引號乙個加雙引號,是兩個不dao同的東西不要版搞混了

2.1 字元常量'a'使用整數(字符集

權的數值碼)表示,最常用的字符集是ascii碼,在ascii碼中,字元'a'的值為97,這也是為什麼字元可以作加減法運算和比較

2.2 字串字面量"a",在c語言中作為陣列來處理,既然如此,編譯器就會把它看作是char *型別的指標。題幹中p = "abcd"其實是將"abcd"首個字母的位址賦值給了字元指標變數p,或者說p指向了字串字面量"abcd"的第乙個字元

2.2.1 c語言編譯器處理長度為n的字串字面量時,會為其分配長度為n+1的記憶體空間,第n+1個位置存放額外追加的空字元(字串結束的標誌)

15樓:

要理解 你要知道 字串copy 幹什麼了 雙引號 做了3件事

1.申請了空間,存放了字串

2. 在字串尾加上了'/0'

3.返回位址

你這裡就是 返回的位址 賦值給了 p 希望採納~~~~~~~~~~~~~~~~

c語言裡面的字串常量和字元常量有什麼區別

字串常量是乙個或多個字元組成的常量 比方說 乙個字串常量a 給它的初始值是 abc123 可以是乙個字元 5 構成 但是字元常量只能是乙個字元 比方說乙個字元常量 a 它的初始值為 1 不能多於乙個字元的 字串是以 0結束的 而字元常量是沒有的 字串常量和字元常量有什麼區別就是多個字元和單個字元的區...

c語言字串陣列逆序問題,C語言字串陣列逆序問題

第乙個問題 字串陣列的長度不包括最後的 0 第二處問題 1 把 for i 0 str1 i 0 i 後面加上乙個分號 2 把for i 0 str1 i 0 i 後面的花括號去掉 3 再把 puts str1 前面的花括號去掉就可以了 程式如下 include stdio.h int main c...

c語言,關於字串

mark 這個分析了下還挺複雜 想想先 這樣子話幾乎是沒有辦法實現的。因為哪一些字元屬於子串是不確定的,big可能是乙個子串,igb可能是乙個子串,gba可能是乙個子串。不過當你確定你需要查的子串時,可以進行判定的。比如查詢這個字串裡有多少個 big 我這裡提供乙個思路參考。這是乙個字串 strin...