chara和chara有什麼區別

2021-03-03 21:38:29 字數 5286 閱讀 9370

1樓:匿名使用者

沒有什麼不同,都是定義一個指向char型的指標但是要注意的是如果你想在一句話裡面2個指標,那麼正確的做法應該是char *a,*b;而不是char* a,b;

後面那個b只是一個char型變數

所以一般提倡使用第一種,避免糊塗搞錯,當然如果你僅僅在一句話裡面定義一個變數或者是在定義形參的話,那麼第二種看上去更直接一點

希望對你有幫助

char *a和char* a有什麼區別

2樓:匿名使用者

沒有什麼不同,都

是定義一個指向char型的指標

但是要注意的是如果你想在一句話裡面2個指標,那麼正確的做法應該是char *a,*b;而不是char* a,b;

後面那個b只是一個char型變數

所以一般提倡使用第一種,避免糊塗搞錯,當然如果你僅僅在一句話裡面定義一個變數或者是在定義形參的話,那麼第二種看上去更直接一點

希望對你有幫助

3樓:匿名使用者

作用是一樣的,區別是風格問題。寫**多的人都有自己的風格,特別是大公司,要求風格統一,所以我們看到一段**風格與其他的不同時可以斷定,這段是copy的

4樓:匿名使用者

沒有區別,完全一樣。

5樓:冰戟玉語

c語言裡有char* a這種格式啊,沒見過,我只知道char *a表示定義了一個字元陣列。

char *a,b;和char* a,b有什麼區別?

6樓:匿名使用者

完全沒區別

都是a是char *型別,b是char型別的。

不用管*離誰近,只生效一次。

char a 和 char *a 有什麼區別? 例如我用 char a = 33 就沒問題 但是char *a = 33 就報錯了?

7樓:金色潛鳥

宣告 char a; 宣告 a 是 char 型變數,char 型變數 是 1 位元組 整型。

宣告 char *a; 宣告 a 是 指標,用於 指向 char 型變數, 指標用於存放指向的變數的地址。

宣告 char *a = 「abc」是宣告和初始化,這裡用字串常量做初始化,這是允許的。

宣告 char *a = 33 是錯誤的,因為 33 是整型常量,不是字串。

語句 printf(「%s」,*a) 是錯誤的, 同樣的外形 *a, 在宣告中的意思 和 在 語句 裡的意思不同(這是c/c++自己的規則-- 形式邏輯不成立),要輸出 字串 要用 printf(「%s」,a)。

char *a和char* a有什麼區別?

8樓:淋漓盡致的

沒有什麼不同,都是定義一個指向char型的指標但是要注意的是如果你想在一句話裡面2個指標,那麼正確的做法應該是char *a,*b;而不是char* a,b;

後面那個b只是一個char型變數

所以一般提倡使用第一種,避免糊塗搞錯,當然如果你僅僅在一句話裡面定義一個變數或者是在定義形參的話,那麼第二種看上去更直接一點

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

9樓:匿名使用者

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

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

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

10樓:凌亂心扉

兩者區別如下:

一、」讀「」寫「能力

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,防止產生野指標。

11樓:匿名使用者

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型別

12樓:狂盜一枝梅

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

13樓:楊武威

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

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

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

14樓:小小的

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

15樓:匿名使用者

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

16樓:快來見本大人

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

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

char *a[n] 和char (*a)[n]有什麼區別?

17樓:哇哎西西

一、」讀「」寫「能力

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";存於棧上,快。

18樓:匿名使用者

由於[ ]比*優先順序要高,因此a先與[n]結合,形成a[n]形式,這顯然是陣列形式,它有n個元素。然後和*結合,*表示此陣列時指標型別的,每個陣列元素都指向一個char型的變數。

*a[n] (*a)是一個指標有n個元素,每個元素為char型。也就是a指向的物件是有4個char元素的陣列,即a是指向一維陣列的指標。因記住,此時a只能指向一個包含n個元素的一維陣列,a的值就是一維陣列的起始地址

19樓:匿名使用者

兩者的區別是char *a定義了一個指標數字,即a的每個元素都是字元陣列,也就是a是個二維陣列;而char(*a)定義的是指向*[n]的指標,也就是指向二位字元陣列的指標。

char* 和char的區別

20樓:

char a 表示 定義了一個bai變數,名叫a, 它是字元du型別(佔用內zhi存的一個位元組

dao)char a[1] 表示 定義了一個數內組,名叫a, 它是一個包含

容一個字元型別資料的陣列,這個陣列只能存放1個字元型別的資料。兩者在不接觸指標做函式引數的程式的時候功能是一樣的。

21樓:育知同創教育

char* c與char *c 沒有任何區別

char* c和char c 有區別,char c是一個字元,char* c是char指標,他可以帶表一個字串引用。

char *a[] 和(char *)a[]的區別

22樓:千門公子_雲襄

char * a 定義一個字元型指標變數陣列

(char *)a 將陣列a強制轉化為字元型指標變數陣列

不知道說的對不對 說錯勿噴

假設已定義chara和charpa下面的

對於a選項 字串不能直接賦值給陣列,需要借用strcpy函式賦值過去。但在c語言中,在定義陣列時,允許初始化賦值。既如,char a 10 hello 得出a為錯誤選項。對於b選項 在題目中,明確 p a,既把a的首地址給指標。所以指標p指向a 0 的地址。而c program為字串。把字串賦值給地...

mental和spiritual有什麼區別

1 表達內容不同。mental多指 心理上的 例如 his agony was mental,not physical.他的痛苦是心理上的,不是身體上的。spiritua多l指 心靈上的 例如 her spiritual beauty outshone her physical beauty.她的心...

strict和stringent有什麼區別

當都做 嚴厲,嚴格 講時,兩者有細微的差異 其他的不同詞義這裡不研究,也沒什麼必要 strict 表示 嚴格的,多指在執行,遵守或要求上認真仔細的,嚴格的 如 strict standards.嚴格的標準。stringent表示 嚴格的,多指對行為要求標準嚴格的 如 stringent safety...