c語言中char的問題,C語言中char的問題

2021-12-19 05:39:33 字數 5662 閱讀 7411

1樓:匿名使用者

書上講的是使用上的情況。 對char型別的情況介紹是正確的, 但是對字元常量書上忽略了一點技術細節。

字元常量這個東西的具體情況並不是像你理解的那樣,這個東西的型別其實是 int而不是char。 你可以找個編譯器試試看sizeof('a')的結果是4。

所以你寫'字元'或者'1234'是可以的, 如果你寫 '5字元'和'12345'就是不可以的。 這個狀況某種角度來說就是為了以後的擴充套件, 比如從1位元組的字元擴充套件到2位元組或者4位元組東西也可以作為一個字元輸入(這在utf32的情況下已經有了, c0x也加了這方面支援)

目前而言, char要跟字元常量分開來看, 字元常量不一定是char,也可能賦給 wchar_t或者以後的進一步擴充套件

2樓:匿名使用者

1、首先,你不能用單引號,這裡「字元「算是字串了,而不字元,不能用單引號。

2、漢字佔兩個位元組,即使char c = 『字』這樣也是不可以的wchar_t 是可以完成的,但是用char陣列也可以實現用下面的**:

char a = "字元";

printf("%s",a);

3樓:難得當歌對酒時

這裡的 字元 指的不是 字元 這兩個字 ,而是 a,b,c,d.... 之類的字元。

漢字不能存放在 char 裡 ,要用 wchar_t 。

4樓:猶令慧

char name = '字元'; 這哩的字元是指在單引號 ' '中輸入字元吧、不是把'字元'直接賦值給name以上。

5樓:應有福勵風

第一句是申明並初始化,是可以的,後要要賦值,要麼一個一個賦,要麼就用記憶體拷貝。

ch[0] = '2';

ch[1] = '2';

ch[2] = '2';

ch[3] = '2';

ch[4] = '\0';

//或strcpy(ch, "2222");

6樓:系傅香拱賦

#include

#include

int main()

第二次不是定義,所以要copy進去

你也可以直接用指標:

#include

#include

int main()

7樓:雲素琴藩雲

char

ch[256]

="1111";ch=

"2222";

第一個是定義及初始化

定義了一個char型的陣列ch,有256位ch[256]

=「2222「表示ch陣列的256個元素賦值,但是陣列下標只從0到255

所以會報錯

且char字元只有1位,所以你要賦值"2222"的話就直接用陣列名賦值就好了ch=

"2222";

c語言中char的用法

8樓:會飛的小兔子

#include

intmain()

inti;

charc;//定義一個char型別的變數。

c='a';//賦值

for(i=0;i<26;i++){

printf(「%c」,c);//輸出一個字元用%c,c++;//charc增加1,依次可以得到:abcdef。。。。zprintf(「\n」);

if(c<='z')

printf(「stillasmallletter。\n」);

else

printf(「notasmallletter。\n」);

scanf(「%c」,&c);//輸入一個字元到c中。

charstr[10]=「astring」;//定義一個字元陣列,它的初值是「astring」

for(i=0;str[i]!='\0';i++);//計算str的長度。

printf(「thelengthofstris:%d\n」,i);

擴充套件資料1、宣告字元型變數

字元型變數的宣告方式和其它型別變數的宣告方式一樣:

chargood;

charbetter,best;

以上**宣告瞭三個字元型變數:good、better,和best。

2、字元常量與初始化

可以使用以下語句來初始化字元型變數:

charch='a';

這個語句把ch的值初始化為a的編碼值。在這個語句中,'a'是字元常量。c語言中,使用單引號把字元引|起來就構成字元常量。

9樓:幻翼高達

c語言中char用於定義字元型別變數或字元指標變數,例如「char a;」則定義了變數a是字元型別,「char *a;」則定義了變數a是字元指標型別。

char是c語言整型資料中比較古怪的一個,其它的如int/long/short等不指定signed/unsigned時都預設是signed,但char在標準中不指定為signed/unsigned,編譯器可以實現為帶符號的,也可以實現為不帶符號的。

關於char還有一個特殊的語言就是char *,它在c語言中有專門的語義,既不同於signed char *,也不同於unsigned char *,專門用於指以'\0'為結束的字串。

10樓:黑白灰的色彩

在c語言中,char變數為一個位元組,8位,signed char表示的範圍:-128~127【-128在記憶體中的二進位制表示為1000 0000,127在記憶體中的表示為0111 1111】;unsign char表示的範圍:0000 0000~1111 1111,即0~255;注意:

整數在記憶體中是以補碼存取的,正數的補碼:等於自己,負數的補碼:取反加1,例如:

127在記憶體中表示為0111 1111, -127在記憶體中表示為(0111 1111)+1=1000 0001; 假定某記憶體單元p的內容是1111 1111,那麼它一定是255嗎?實際上取決於你的**是要把它看成有符號還是無符號數,如果是無符號則表示255,如果是有符號則表示-1【對於有符號數,最高位為符號位,1表示負,0表示正】:

signed char c=*p; //c=-1unsigned char c=*p;//c=255char是c語言整型資料中比較古怪的一個,其它的如int/long/short等不signed/unsigned時都預設是signed。雖然char在標準中是unsigned(因為char型別提出的初衷是用來表示ascii碼,ascii碼的範圍是0~127),但實際情況中究竟是signed還是unsigned取決於編譯器。當你不確定編譯器的預設char型別時,就用顯示宣告:

signedchar和unsigned char

c語言中char是什麼意思

11樓:荌繎丶誑嘢菰漃

char 是個資料型別,bai不知道du你是否認識int、zhishort、double、floar之類的,如果你認dao識,那麼char就是跟它們內

一樣,只不過容char定義的是字元變數、陣列、指標。如果你不認識,建議好好看下c語言資料型別的介紹

12樓:安

char *字元型指bai針,指向一個字元;duchar ** 指向字元型指標的指標;

char**最常zhi

使用在main函式中:

int main(int argc,char** argv);

等同dao於 int main(int argc,char * argv[])

等同於int main(int argc,string argv)(c語言中並不直接包含字串型別,此處便於理解,所以使用string型別)由此看來char**實際上就是指向一系列字元,類似於字串;

13樓:

cout << "this is test code of c++ class: "<< endl;例如:

c語言中char型別陣列的輸出問題--輸出時為何需要&符?

14樓:墨汁諾

char a[20];

那麼a表示字元陣列的起始地址,它和&a[0]是一個意思。

使用printf()輸出字元陣列a的內容:

printf("%s\n", a);

就等同於printf("%s\n", &a[0]);

輸出的時候用:

int i = 0;

for (i=0; i<

防止緩衝區溢位可以用這樣的:

fgets(a, sizeof(a), stdin);

a[strlen(a) - 1] = '\0';

15樓:匿名使用者

你前面輸出格式為"%s"即字串型別,後面對第一個字元s[0]加&表示為取得整個字串的首地址,再以字串的格式肯定讀出的是整個字串,如果你把"%s"改為"%c"把&去掉就會輸出首字元,如果只把&去掉,那麼你是以字串的格式輸出首字元,格式不對當然是亂碼了

16樓:

printf("%s",s[0]); -- 不加&符號 s[0] 表示 整型值,數值等於s裡第一個字元(你的情況是h) 的 ascii 值,如果用%d 格式列印,得104,如果用%c 格式列印,得字母h, 用%s列印 得亂碼。

printf("%d",s[0]); 打出 104printf("%c",s[0]); 打出 h%s 輸出格式,用於字串,要求給 字串的首地址,char s 的首地址 是 &s[0] 或 s.

printf("%s",s); 打出打出打出打出 w are you....

17樓:匿名使用者

& 這個符號叫做取址運算子 標誌一個地址 對應前面的%s c語言基礎很重要! 一些細節要注意!

18樓:淦菀歐陽陽冰

query取得iframe中元素的幾種方法在iframe子頁面獲取父頁面元素

**如下:$(

19樓:我是菜狗

那當然%s要的是地址

如果你printf("%s",s); 也是一樣的

s是陣列的首地址

20樓:匿名使用者

記住c語言的nb之處在於在處理字串的時候使用一種超乎尋常的思維: 用一地址或字元指標就可以代表一字串!

當然,想列印一字串,也通過這種方式就可以獲得。

為什麼呢?

因為c語言內部的機制表明: 它對字串的處理是,遇到'\0',其實也就是0,就表明字串結束了,所以呢,不論這個指標在什麼位置都沒關係,編譯器會依次向後尋找字元,知道遇到null(或0或'\0')就算字串結束了。

21樓:

因為%s要的是一個地址 所以要這麼寫

也可以是s

c語言中關於char的問題

22樓:匿名使用者

w_char是寬字元,是為了適應像漢字這種無法簡單的用ascll碼編碼的文字而建立的,順便提一下tchar算出來是1個位元組,只是因為當前預設不是unicode程式設計,沒有定義unicode,如果你在vc2005下計算,那就是兩個位元組。

c語言中為什麼char a,C語言中char a 什麼意思,他和char ( )a 有什麼什麼區別?

char a abcd 中a指標指向的地址儲存的內容 abcd 為字串常量,是放在靜態儲存區 char a 10 儲存的內容放在棧上 用scanf 進行輸入操作時,只能修改棧中的變數值,靜態儲存區的常量值不能被修改,所以會報記憶體錯誤 char a char a 表示將變數 a進行強制型別轉換為ch...

c語言中char是什麼意思呀,C語言中char是什麼意思?和char有什麼區別呀

char 字元型指標,指向一個字元 char 指向字元型指標的指標 char 最常使用在main函式中 int main int argc,char argv 等同於 int main int argc,char argv 等同於int main int argc,string argv c語言中並...

c語言中char是什麼意思

char 是個資料型別,bai不知道du你是否認識int zhishort double floar之類的,如果你認dao識,那麼char就是跟它們內 一樣,只不過容char定義的是字元變數 陣列 指標。如果你不認識,建議好好看下c語言資料型別的介紹 char 字元型指bai針,指向一個字元 duc...