c語言問題,請問char a和short a有什麼區別?舉個例子

2021-04-20 14:50:39 字數 5678 閱讀 5370

1樓:匿名使用者

char a[20] 是宣告一個大小為20的字元陣列 a,一個位元組 多用於 字元 和 位

short和int一樣,是資料型別。用於表示有符號整數。不同的是,他們在記憶體中所佔的空間大小不同

2樓:匿名使用者

char a[20]是字元型陣列,元素20個。

short a[20]是短整型陣列,元素20個。

short a[20]=short in a[20]

c語言,char a;和char a[1];有什麼區別

3樓:匿名使用者

char a 表示 定義了一個變數,名叫a, 它是字元型別(佔用記憶體的一個位元組)

char a[1] 表示 定義了一個陣列,名叫a, 它是一個包含一個字元型別資料的陣列,這個陣列只能存放1個字元型別的資料。

兩者在不接觸指標做函式引數的程式的時候功能是一樣的。

4樓:萢萢

char a是字元,char a[1]是字元陣列。

計算機c語言中,那個char a[20]和char a,有什麼區別啊,**等解答,懂了第一時間採納

5樓:匿名使用者

char a[20] 是宣告一個大小為20的字元陣列 a,

char a 是宣告一個字元a

6樓:

char a 代表字元常量,而char a [ ] 代表字元陣列。

7樓:匿名使用者

char a

開闢一塊記憶體,儲存一個char型別的資料。直接使用a訪問該記憶體中的資料,&a表示這塊記憶體的首地址

char a[20]

開闢一塊記憶體,儲存20個char型別的資料。使用下標a[i](0<=i<=19)訪問該記憶體中的資料,如果單獨使用a表示這塊記憶體的首地址

8樓:

char a;表示一個字元

a = '0';

char a[20];表示一個字元陣列

a = ;

9樓:雨中笨豬

一個是字元陣列 一個是單個字元

10樓:蒼老師的戀愛

char a[20]:是定義一個字元陣列,裡面有20個字元元素,下標從0到19即a[0],a[1] .. a[19]

而char a:就是定義個字元變數

11樓:煒煒

char a[20] 建立一個字元陣列,可以存20個字元

char a 建立一個字元

c語言中 定義 char a=1 和char a=「1」和char a=『1』什麼區別?一定採納

12樓:風雷雪電

第一bai

個char a = 1,則a的值du為數值1。

第二個語法zhi

錯誤。第三個char a = '1',則daoa的值為字回符'1',對應的數值請參考ascii碼,答是數值49。此時:

printf("%d",a);//得數值49printf("%c",a);//得字元1

c語言中'a'和"a"有什麼區別?

13樓:哇哎西西

1、本質區別

雙引號裡面的是字串, 而單引號裡面的代表字元。

2、輸出區別

str = 「a」輸出的就是a這個字母;

str = 『a』輸出的測試65

3、底層區別

用單引號引起的一個字元實際上代表一個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。

14樓:高金山

'a'是一個字元,"a"是兩個字元,'a'和'\0'

比如,下面這個例子:

char a1[1]=;

char a2[1]=;

前者a1[0]='a',能編譯通過

後者編譯通不過,因為a2是一個元素的陣列,而"a"有兩個元素,分別是'a'和'\0'

補充:'aa'這是錯誤的寫法,單引號是字元的引號,它只能引一個字元的"aa"這是正確的寫法,雙引號是字串的引號,它有三個字元:'a','a','\0'

15樓:周肆爻

定界符不同,字元常量用的是單直撇,字串常量則用雙引號長度也不同,字元常量只能有一個字元,也就是說字元常量長度為一,而字串常量可為0,也可為任意數。即使字串常量字元數量為一,長度也不是一。

例如,字串常量"h"(這手機沒雙引號)

則長度為2,字元就是h \0

16樓:匿名使用者

在 c 語言中,

1.單引號是字元的意思:『a』,a就是一個字元;

2.雙引號就是 字串的意思:」abd「就是一個字串。

17樓:匿名使用者

'a'是字元,在記憶體中表示為0x61,儲存空間為1個位元組

"a"是字串,在記憶體中表示為 0x61 0x00 ,儲存空間為2個位元組

18樓:匿名使用者

樓上的回答很好!!!

對於字元和字串沒什麼好解釋的!!!

建議採納樓上的回答.

另外,回去多看看書,多練習!!!

19樓:摘一把青梅煮酒

字串有結束符 \0

c語言 &a和a的區別搞不明白?

20樓:武荊軻

首先,a是一個變數,儲存著值。bai&a是常量,是du變zhi量a的記憶體dao

地址。一般的&a是用來回

賦值給指標的(答int ×p=&a ;),或者是作為函式的引數傳遞(地址傳遞)。比如scanf中:scanf("%d",&a);

如果輸出,也並不是按照你說的那樣,比如a是字元型:putchar(a) ;a是整形:printf(「%d」,a) ;

所以輸出是用a還是&a,要看函式的引數型別是變數還是指標。

21樓:匿名使用者

當然不是

bai,首先你得區分清楚dua的屬性,它是什麼型別的zhi,取他的值,不管是dao什麼類專型的,都是屬a本身.而&a表示的是取得是a的記憶體地址.因為不管a是什麼型別的,作業系統都會給這個變數分配一個記憶體中存放的地址,它是一串用十六進位制表示的地址.

22樓:秋風水渡人

a表示的是取變數的值,&a表示該變數在記憶體中儲存的地址。不管是那種型別的,a都表示值,&a表示地址。

23樓:it民工淚奔

不是的 在定義a的時候系統自動給a分配一個地址 a代表的是這個地址裡面的值 而&a代表 取a的地址

c語言中char *a[ ]什麼意思,他和char (*)a[ ]有什麼什麼區別?

24樓:匿名使用者

char *a表示的是陣列a是一個指向char的指標型別陣列,相當於a裡面的每一個元素都實際值都是一個指向字串的指標(即儲存某個字串的首地址)

後面這個你應該要問的是char (*a)吧,不然的話就和第一個一樣了

char (*a) [n]表示的是指向一個元素為n的字串陣列的指標,說白了就是一個陣列指標(指向陣列的指標)。這個和函式指標有點像 int (*p) (int,int),表示指向返回值為int,並且含有2個int變數的函式

25樓:凌亂心扉

兩者區別如下:

一、」讀「」寫「能力

char*a="abcd";此時"abcd"存放在常量區。通過指標只可以訪問字串常量,而不可以改變它。

而char a[30]="abcd";此時"abcd"存放在棧。可以通過指標去訪問和修改陣列內容。

二、賦值時刻

char*a="abcd";是在編譯時就確定了(因為為常量)。

char a[30]="abcd";是在執行時確定

三、指向地址所儲存的值不同。

對於char**p1,*p1的型別為char*型,而**p1的型別才是char型。

對於char*類指標p2,*p2就是char型。

char*a="abcd";存於靜態儲存區。在棧上的陣列比指標所指向字串快。慢

char a[30]="abcd";存於棧上。快。

四、記憶體分配方式

記憶體分配有三種:堆區和棧區、靜態儲存區。功能不同;使用方式也不同。

1、棧:就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數、函式引數等。

2、堆:就是那些由new或malloc分配的記憶體塊,在不適用時,要手動用delete或free來釋放記憶體區域。

3、靜態儲存區:記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個執行期間都存在。它主要存放靜態資料、全域性資料和常量。

但是,良好的程式設計習慣是:如果某動態記憶體不再使用,需要將其釋放掉,並立即將指標置位null,防止產生野指標。

26樓:匿名使用者

char *a是錯誤的,只能定義char *a[任意整數];

或者char *a[4或者其他整數或者不填]=「abc」;

或者char *a[3或者其他整數或者不填]=;

或者char *a[2或者其他整數或者不填]=;

或者char k,j,l,*a[3]=;

char (*)a也是錯誤的,只能定義為(char *)a[任意整數];

首先說下第一個,以char *a[4];為例, 這語句是定義一個指標型陣列,他的元素都是指標。指標是可以直接來指向一個字串的,用法是char *p="good。指標型陣列中每個元素都是指標,則每個元素都可以去定義一個字串或者是定義一個變數;所以如果有一個a[4][4]=; 現在就可以用char *p[4]=; 這樣的好處是節約了空間,一個陣列被定義下來後,記憶體就被分配了,如果這個陣列在後面的語句中不再使用了,那它就佔著空間,使得原始檔很大,如果使用指標陣列,就很容易解決這個問題了,因為只要讓指標陣列在指向其他的字串或者其他的一些變數 ,這樣原來的空間就被釋放了

(char *)a[4]的意思是將指標型陣列a中的元素a[4]強行轉化為char型別

27樓:狂盜一枝梅

char *a一般用於函式中形參的宣告,特別只用於一維陣列;char(*)a不明白什麼意思,難不成是將a陣列強制轉換成字元型???只是猜測,不要多想呵。

28樓:楊武威

char *a[ ]相當於char** a,是指標的指標;

char (*)a[ ] 是char型別指標陣列;

(純屬個人理解,僅供參考)

29樓:小小的

含義是一樣的。其實陣列也是指標。都是宣告瞭a這個char*型別陣列。雖然有語法錯誤,但是意思是那樣的。

30樓:匿名使用者

char* a:a首先是個陣列,陣列中的每個元素是char*型別的,也就是每個元素是一個指向char型別的指標,至於char(*)a,圓括號一般是用作強制型別轉換的,這種寫法沒有見過,編譯器應該分析不出這個語法,會報錯

31樓:快來見本大人

char *a[ ] 表示一個陣列a,陣列裡的元素型別是char *

char (*)a[ ] 表示一個指標變數a,指向的變數型別是 char 的陣列

C語言,char aabc ,c語言中 char a a ,abc 是什麼意思?

等價於char a 4 abc 還有復個自動加上的字元制串結束符。這是陣列初始化自然會分配記憶體,因為在初始化時使用了 引號,所以會自動加上 0。一個char是8個位,也就是一個位元組,所以須要在棧上開闢四個字元的大小空間。有一種情況例外 char const p abc 該 字串被分配到字元常量區...

C語言中的chara和inta所佔位元組是一樣嗎

不一樣。char佔一個位元組,那 麼含有6個char的陣列,char a 6 就佔 1x6 6 個位元組。而int則一般佔4個位元組 就假回設佔4個自己 那麼含有答6個int的陣列,int a 6 就佔 4x6 24 個位元組。不一樣啊 前者佔用6位元組 後者佔用24位元組 因為一個字元型 一個整形...

C語言中的char a和int a所佔位元組一樣嗎

不一樣。type a 6 佔的空間是 sizeof type 6 所以 char a 6 必然是6位元組。而int a 6 根據平臺不同,可能是12位元組或者24位元組。char a 6 表示一個有6個char型別copy元素組成的陣列,所以佔用記憶體為 6 一個char型別佔的記憶體大小,在一般系...