1樓:匿名使用者
在c語言中並沒有bai
字串這個型別
du。所說的字zhi符串就是字元dao陣列。也就是char型別版的陣列。
與普通陣列不同的,權字串必須以'\0'作為結束符。
而在c語言中,型別為t的一維陣列,其首地址等效於該型別的一維指標,即t*型。
於是字串,也就是字元陣列,首地址就可以當做char *型使用了。
事實上,在庫函式以及大多數使用到字串作為引數的函式中,其引數都是char *型的。
2樓:路圖元
p="abcd"; //這句話的意思是把字串的首地址賦給p!
3樓:匿名使用者
單引號和雙引號,賦值的時候這個應該有講究吧!具體忘了,幾年沒去看了。
4樓:土杜土杜
p = "abcd"; 編譯器會將字串"abcd"的地址放到指標變數p中。p存放的是它的地址,不是值。
5樓:棄嬰
字串常量賦值給指標變數應該就是把它的首地址賦給指標變數吧 。
6樓:五轉故劍情深
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個位置存放額外追加的空字元(字串結束的標誌)
7樓:
要理解 你要知道 字串copy 幹什麼了 雙引號 做了3件事
1.申請了空間,存放了字串
2. 在字串尾加上了'/0'
3.返回地址
你這裡就是 返回的地址 賦值給了 p 希望採納~~~~~~~~~~~~~~~~
c語言中,為什麼不能對字元指標變數指向的字串再賦值?
8樓:大野瘦子
因為抄c語言中,凡是以""括住的形式直接出襲現,而且你又沒有為其分配記憶體空間的字串都是常量字串,是不能修改其值的。
這樣:char a[6]="hello";
a[2]='c';
就可以了。
這裡你為hello分配了一個長度為6的字元陣列空間來存放。
9樓:種令芮德曜
char*
a=為什麼不能修改,這個要涉及程序佔用的記憶體分段,大概分為**區,只讀
區,全域性區專,堆屬區,棧區。"hello"作為一個字串字面值,是被放在只讀區,只讀顧名思義就是不能修改的。char*
a="hello",相當於把hello的地址賦給了a,故而不能對a指向的內容進行修改。char
a="hello",這樣賦值的就是一個字元陣列。字元陣列a是在棧區裡申請的一個空間給a,然後把只讀區的"hello"進行了一次複製再賦值給a,這樣a的指向是能修改的。
10樓:匿名使用者
c primer plus 一書中寫到:「內容」為字串面量,其被視為常量,故無法再進行修改。只能對其指標的值(改變位置)進行修改,不能改變其內容。
11樓:
這不是絕對的:
bai當指du
針指向的字串是zhi常字串時當然不能再賦dao值,因為目標是「常量專」,而當指標
屬指向的字串不是常字串時就可以再賦值,比如用動態申請記憶體方法建立的字串。具體說就是用char *p="abcqer12345";這種方法定義字串是不能通過指標改變內容的,原因是這個定義確定了abcqer12345是字串常量——因為char *p="abcqer12345";被編譯器解釋為「建立一個字串常量abcqer12345,並把它的首地址(就是a的地址)賦給char *型指標p」——既然是「常量」,自然就不能更改。
12樓:匿名使用者
c語言bai中,凡是以""括住的形式直du接出現,而且你zhi又沒有為其分配內dao
存空間的字
符串專都是常量字串,是屬不能修改其值的。
char a[6]="hello";
a[2]='c';
就可以了。這裡你為hello分配了一個長度為6的字元陣列空間來存放。
13樓:匿名使用者
char *a="hello";
''hello''是常量,所以a指向的是常量區,不能對於常量區的元素進行賦值
14樓:匿名使用者
char *a="hello";這個形式的定義是屬於字串常量,不可以修改的.
15樓:匿名使用者
不能修改!
char *p="hello";
相當於 const char *p="hello"
以這種方法初始化的字串是常量字串,而系統預設對常量賦初值後,其值無法被修改,否則會報錯,所以不能修改。
c語言中字串如何轉為整型數值,C語言中 字串如何轉為整型數值
在c語言中將字串轉化成整型有兩種方法。1 用atoi函式。atoi的功能就是將字串轉為整型並返回。其宣告為int atoi char str 比如atoi 1234 會返回整型1234。要呼叫atoi,需要引用標頭檔案stdio.h2 用sscanf。sscanf與標準格式化輸入函式scanf類似,...
C語言中字串常量和字元常量的區別
字元常量是單引號中的,在ascii表中有對應編號,字串是雙引號中的,單引號是字元常量 雙引號是字串常量 字串常量是一個或多個字元組成的常量 比方說一個字串常量a 給它的初始值是 abc123 可以是一個字元 5 構成但是字元常量只能是一個字元 比方說一個字元常量 a它的初始值為 1 不能多於一個字元...
c語言字串陣列的問題C語言字串陣列的問題
include int main scanf s a for i 0 a i 0 i for j 0 j 5 j 修改 1 下標從0 4,共5個 return 0 每行結尾的 僅僅是為了連線字串使用的,如果一個字串過長,寫在一行比較不合適,就在該行結尾處加上一個反斜槓 就可以在下邊的行繼續寫這個字串...