c語言我為什麼不能直接用把字元變數的值賦值給另一

2021-03-04 09:01:28 字數 5238 閱讀 3337

1樓:匿名使用者

沒問bai題啊du

,zhigcc和daovs2015都沒問題回:答

#include

intmain(int argc, char **argv)

2樓:節俊智雲旋

因為巨集是乙個

簡單替換,所以c語言中用巨集定義乙個字元常量(乙個字母)可以賦值回給字元變數答。實質是在編譯之前會把巨集替換掉,然後再編譯。

例如:#define a 5

void main()

在編譯之前a已經被替換成5了,所以就可以賦值給num。

c語言 我為什麼不能直接用 = 把乙個字元變數的值賦值給另乙個字元變數

3樓:天藍雲揚

直接賦值字元變數或者相互賦值是沒有問題的,程式崩潰可能是其它原因。

c語言中為什麼用巨集定義乙個字元常量(乙個字母)可以賦值給字元變數,

4樓:匿名使用者

1、因為巨集定義實質是一種替換,雖然看起來是字元,實際上最終是被替換成其他常熟或者值。

2、巨集定義中的識別符號都採用大寫,這是程式設計中一種約定俗成的習慣:

1)巨集替換不做語法檢查,所以在使用的時候要格外小心2)巨集替換通常在檔案開頭部分,寫在函式的花括號外邊,作用域為其後的程式,直到用 問好

3)# u n d e f 命令終止巨集定義的作用域4)不要在字串中使用巨集,如果巨集名出現在字串中,那麼將按字串進行處理.

5樓:匿名使用者

因為巨集是乙個簡單替換,所以c語言中用巨集定義乙個字元常量(乙個字母)可以賦值給字元變數。實質是在編譯之前會把巨集替換掉,然後再編譯。

例如:#define a 5

void main()

在編譯之前a已經被替換成5了,所以就可以賦值給num。

6樓:匿名使用者

漢字根據編碼方式不同,所佔的大小2~4個位元組不等,漢字賦值給字元變數,只顯示第乙個位元組,出問號就不奇怪了

用漢字賦值給字元數陣列然後在顯示的話,一定要考慮編碼方式問題,你的終端支援哪種就選擇哪種,否則亂碼

7樓:匿名使用者

#define namehello "wendy"

#include

#include

void main()

8樓:匿名使用者

c裡面不支援漢子,你用vc++6.0試試,那個可以顯示漢子

c語言中,字串為什麼不能直接用等於號賦值給乙個變數。 例如 int a;a=「bcd」;

9樓:溪貝溪貝

等號當然可以用賦值,賦值就是把等號左邊值的賦給右邊,之所以你寫的不對是因為你版

的資料權型別不對。a是int型,即整數型的,例如 你可以讓 a= 3 意思是把3賦給a, 但不能讓乙個字串賦給a,所以你那樣賦值肯定會報錯。

c語言沒有專門用於儲存字串的變數型別,字串都是被儲存在char型別的陣列中。 可以把所有的字串都看成是乙個陣列。可以這樣宣告 char a[4]=; 意思就是宣告乙個 char型別的陣列,陣列中元素的個數是4個,但只能存3個元素,最後乙個是空字元。

每個元素分別是b,c,d和空字元。

輸出也很容易 用%s表示字串,printf("%s",a); 請看我的示例圖

10樓:gta小雞

字串字面值相當於乙個const char*指標,只能賦值給const char*變數。

c語言中為什麼用巨集定義乙個字元常量(乙個字母)可以賦值給字元變數?

11樓:匿名使用者

1、因為巨集定義實質是一種替換,雖然看起來是字元,實際上最終是被替換成其他常熟或者值。

2、巨集定義中的識別符號都採用大寫,這是程式設計中一種約定俗成的習慣:

1)巨集替換不做語法檢查,所以在使用的時候要格外小心2)巨集替換通常在檔案開頭部分,寫在函式的花括號外邊,作用域為其後的程式,直到用 問好

3)# u n d e f 命令終止巨集定義的作用域4)不要在字串中使用巨集,如果巨集名出現在字串中,那麼將按字串進行處理.

12樓:關韶侍荏

因為巨集是乙個簡單替換,所以c語言中用巨集定義乙個字元常量(乙個字母)可以賦值給字元變數。實質是在編譯之前會把巨集替換掉,然後再編譯。

例如:#define a 5

void main()

在編譯之前a已經被替換成5了,所以就可以賦值給num。

c語言中,為什麼不能對字元指標變數指向的字串再賦值?

13樓:大野瘦子

因為抄c語言中,凡是以""括住的形式直接出襲現,而且你又沒有為其分配記憶體空間的字串都是常量字串,是不能修改其值的。

這樣:char a[6]="hello";

a[2]='c';

就可以了。

這裡你為hello分配了乙個長度為6的字元陣列空間來存放。

14樓:種令芮德曜

char*

a=為什麼不能修改,這個要涉及程序佔用的記憶體分段,大概分為**區,唯讀

區,全域性區專,堆屬區,棧區。"hello"作為乙個字串字面值,是被放在唯讀區,唯讀顧名思義就是不能修改的。char*

a="hello",相當於把hello的位址賦給了a,故而不能對a指向的內容進行修改。char

a="hello",這樣賦值的就是乙個字元陣列。字元陣列a是在棧區里申請的乙個空間給a,然後把唯讀區的"hello"進行了一次複製再賦值給a,這樣a的指向是能修改的。

15樓:匿名使用者

c primer plus 一書中寫到:「內容」為字串麵量,其被視為常量,故無法再進行修改。只能對其指標的值(改變位置)進行修改,不能改變其內容。

16樓:

這不是絕對的:

bai當指du

針指向的字串是zhi常字串時當然不能再賦dao值,因為目標是「常量專」,而當指標

屬指向的字串不是常字串時就可以再賦值,比如用動態申請記憶體方法建立的字串。具體說就是用char *p="abcqer12345";這種方法定義字串是不能通過指標改變內容的,原因是這個定義確定了abcqer12345是字串常量——因為char *p="abcqer12345";被編譯器解釋為「建立乙個字串常量abcqer12345,並把它的首位址(就是a的位址)賦給char *型指標p」——既然是「常量」,自然就不能更改。

17樓:匿名使用者

c語言bai中,凡是以""括住的形式直du接出現,而且你zhi又沒有為其分配內dao

存空間的字

符串專都是常量字串,是屬不能修改其值的。

char a[6]="hello";

a[2]='c';

就可以了。這裡你為hello分配了乙個長度為6的字元陣列空間來存放。

18樓:匿名使用者

char *a="hello";

''hello''是常量,所以a指向的是常量區,不能對於常量區的元素進行賦值

19樓:匿名使用者

char *a="hello";這個形式的定義是屬於字串常量,不可以修改的.

20樓:匿名使用者

不能修改!

char *p="hello";

相當於 const char *p="hello"

以這種方法初始化的字串是常量字串,而系統預設對常量賦初值後,其值無法被修改,否則會報錯,所以不能修改。

c語言 如何把乙個字串的值賦給另乙個字串?

21樓:

你用字元陣列的話,用迴圈把每乙個字元陣列單元都賦給另乙個字元陣列單元,你這樣直接用數字賦值肯定是錯的

22樓:挖金剛

陣列是不能直接賦值的,可以使用指標

23樓:***x櫻

直接不能賦值

要strcpy(str,arg);

當然str要比arg長,不然還是錯誤

24樓:匿名使用者

用指標,或者乙個字元乙個字元賦值

在c語言中,定義了乙個字元變數,給他賦值乙個1,為什麼也可以啊

25樓:

因為字元變數在記憶體中存放的是其對應的ascii值,比如說字元『a』,它的ascii值是97。

char ch='a';

printf("%d",ch);

輸出版結果就是97了。所以權對於字元變數你也可以這樣理解:它是單位元組的整型變數。所以當然可以對乙個字元變數賦值乙個1啊。

26樓:擦擦設定

有乙個東西叫ascll碼。bai

就是說du在這裡的每乙個字zhi符都有對應

的無dao符號整形數值。從0-255共256個。剛剛好是版一權個位元組,就是乙個char型變數的位元組數。

例如printf("%c%d",a,a);

會輸出 a,65。其實65這個整形數在ascll碼裡面表示的就是a,在c語言中,它們只是顯示出來不同而已。

所以你給乙個char變數賦值1的話,根據ascll表,也有相應的字元。所以能輸入。

但是注意的是:ascll只有0-255的範圍。所以你要是輸入乙個不再這個範圍內的數字的話,是錯誤的。

在c語言中,變數之間賦值是是乙個變數把自己值拷貝了乙份給另乙個變數嗎?

27樓:士海

如果是陣列的話就不合適 t=a[1];a[1]=a[2];此時a[2]中原來的值就跑到a[1]中去了 因為這牽扯到***pile階段需要回開空間,整個陣列佔乙個空答間,賦值實則把儲存在原空間的值給拿走了 空間也就空出來了

28樓:匿名使用者

對 是拷貝,因為是c語言,沒有引用一說

在c++中,其實可以這麼寫

k = &a k和a的值都一樣,但是不論k改變還是a改變 兩個變數會同時改變參考下

29樓:匿名使用者

你肯定專門寫了 個函式。。。形參和實參沒有對應

完全正確

30樓:匿名使用者

答案是全是 你這樣寫 最後的結果是 a b的值相互換了

c語言中為什麼用巨集定義字元常量字母可以賦值給字元

1 因為巨集定義實質是一種替換,雖然看起來是字元,實際上最終是被替換成其他常熟或者值。2 巨集定義中的識別符號都採用大寫,這是程式設計中一種約定俗成的習慣 1 巨集替換不做語法檢查,所以在使用的時候要格外小心2 巨集替換通常在檔案開頭部分,寫在函式的花括號外邊,作用域為其後的程式,直到用 問好 3 ...

下面這個C語言程式直接用變數運算就不能發生交換,而用指標的引用運算為什麼能

這個計算順序與編復譯器的實 制現有關,我用 bai g 得到的結果是 2,1。編譯出的程式 du的計算順序大 zhi致是這樣的 從dao左往右,先計算 p,得 1,放入暫存器,然後 略 用不用指標都是一樣的,q p p q q 能交換的話,b a a b b 也可以。一 c語言裡沒有bai引用du這...

c語言中轉義字元 與 ,什麼時候用?

一般在輸出時使用,因為c語言自帶的庫函式不能直接輸出某些特殊的字元,因此需要轉義字元,所以一般在使用printf等函式時,使用轉義字元 與 在輸出語句需要輸出 或 時使用。c語言轉義字元什麼時候要用單引號什麼時候不用?a 單引號裡面的字元 只能輸入乙個,輸入多個會錯誤 abc 雙引號裡面的是字串 可...