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...