1樓:思念不溼
首先,字元變數來ch只能儲存一個字自符,你把一堆的字串賦值給它,肯定不行,至於說的加個const只是說明這是個常量字元,字串還是一堆而不是一個字元,字元變數ch肯定還是儲存不了。正確的是char ch(字元陣列),或者char *ch。(字元指標)
建議先去把字元變數,字元陣列,字串,字元指標這些基本概念弄懂來
c語言中為什麼用巨集定義一個字元常量(一個字母)可以賦值給字元變數?
2樓:匿名使用者
1、因為巨集定義實質是一種替換,雖然看起來是字元,實際上最終是被替換成其他常熟或者值。
2、巨集定義中的識別符號都採用大寫,這是程式設計中一種約定俗成的習慣:
1)巨集替換不做語法檢查,所以在使用的時候要格外小心2)巨集替換通常在檔案開頭部分,寫在函式的花括號外邊,作用域為其後的程式,直到用 問好
3)# u n d e f 命令終止巨集定義的作用域4)不要在字串中使用巨集,如果巨集名出現在字串中,那麼將按字串進行處理.
3樓:關韶侍荏
因為巨集是一個簡單替換,所以c語言中用巨集定義一個字元常量(一個字母)可以賦值給字元變數。實質是在編譯之前會把巨集替換掉,然後再編譯。
例如:#define a 5
void main()
在編譯之前a已經被替換成5了,所以就可以賦值給num。
c語言中字串常量或字元常量是否可以賦值給double型別的變數
4樓:匿名使用者
1)字元常量賦值給double型別變
量,使用強制轉換
double d = (double)'a'; //將'a'的ascii碼值97賦值給d,d=97
2)字串賦值給double型別變數,使用atof函式#incluce//此標頭檔案中包含atof的宣告//...
double d;
char *s = "3.14";
d = atof(s); //atof函式把字串轉換成浮點數
5樓:匿名使用者
字元可以,字串不行。
c語言中,為什麼字串可以賦值給字元指標變數
6樓:匿名使用者
在c語言中並沒有bai
字串這個型別
du。所說的字zhi符串就是字元dao陣列。也就是char型別版的陣列。
與普通陣列不同的,權字串必須以'\0'作為結束符。
而在c語言中,型別為t的一維陣列,其首地址等效於該型別的一維指標,即t*型。
於是字串,也就是字元陣列,首地址就可以當做char *型使用了。
事實上,在庫函式以及大多數使用到字串作為引數的函式中,其引數都是char *型的。
7樓:路圖元
p="abcd"; //這句話的意思是把字串的首地址賦給p!
8樓:匿名使用者
單引號和雙引號,賦值的時候這個應該有講究吧!具體忘了,幾年沒去看了。
9樓:土杜土杜
p = "abcd"; 編譯器會將字串"abcd"的地址放到指標變數p中。p存放的是它的地址,不是值。
10樓:棄嬰
字串常量賦值給指標變數應該就是把它的首地址賦給指標變數吧 。
11樓:五轉故劍情深
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個位置存放額外追加的空字元(字串結束的標誌)
12樓:
要理解 你要知道 字串copy 幹什麼了 雙引號 做了3件事
1.申請了空間,存放了字串
2. 在字串尾加上了'/0'
3.返回地址
你這裡就是 返回的地址 賦值給了 p 希望採納~~~~~~~~~~~~~~~~
關於輸出字串
include stdio.h main 這樣就能輸出了 你好 你定義的a是字元型的,應該吧a定義為字元陣列,就能輸出了 include stdio.h main include stdio.h main 你的 hello 是個常量字串,得用陣列存起來,這一句 printf s a 就不對,輸出的是...
關於C風格的字串和C 風格的字串小程式
這個我改過了,可以用了。include include include include include using namespace std int main c c風格字串的例項是字串字面值 那string型別的例項是什麼?c 初始化物件有兩種形似,使用string s abcde 的形式來...
C語言,關於字串與字元陣列問題,求高手指點一二啊,謝謝
c的教科書中一再宣告,使用strcpy str1,str2 時一定要保證str1有足夠的空間保證str2拷入。言下之意,strcpy不檢查str1是否能容納str2的拷入,正確性完全由程式設計師來控制。你把 01234567891 拷入到str 10 中,前10個字元是保險的,後二個字元就 難說 了...