char a a abc 與char a a abc char a abc 有什麼區別嗎

2021-03-22 05:37:07 字數 2662 閱讀 9030

1樓:

1,char*a;*a="abc" 是錯誤的, *a是字元,不是字串。

2,另外兩句完全一樣。雖然編譯能通過,但是你這句本身就是錯誤的:字串定義應該是 const char *a = "abc"; 因為字串儲存在不可讀記憶體中,所以c語言中字串的的返回值是 const char*.

3, 如果要得到能讀寫的字串請使用字元陣列: char a = "abc"

2樓:

char *a;

a = "abc";

和char *a;

*a = "abc";

作用相同 就是將字串陣列的首地址給char 指標變數a(假設16位地址值,要被截斷成8位

char *a =「abc」 可以看作是 char a="abc";

3樓:太叔青芬俞環

不行p1沒有初始化(也就是常說的野指標),它指向的空間是未知的先初始化:

p1=char(**)malloc(10*sizeof(char*));

//分配10個char*的空間

p1[0]=(char*)malloc(sizeof(a));

//給p1[0]分配合適空間

strcpy(p1[0],p)

//現在可以了

c語言中, char*a a=「abc」 if(a==「abc」)為什麼恆為假

4樓:千鋒教育

這樣比較的只是記憶體地址

正確的字串比較方法是使用strcmp(char *s1,char *s2)函式比較,需#include

當strcmp()返回0則s1和s2是相等的

5樓:快樂家____歡樂

儲存字元要用單引號,不是雙引號

c語言,char *a;a="abc"abc為什麼可以直接賦值給a?a分配動態記憶體

6樓:

a=(char *)malloc(10*sizeof(char));這一行在這個bai**中千

du萬不能要:如果這zhi樣寫,申請

dao的10個位元組還沒有用就把它內的標容識指標a用a="abc";指向了別處,那10個位元組就釋放不了了,會產生所謂記憶體洩漏問題。有char *a;和a="abc";就非常好了。在a是char *型指標時,a="abc";的意思不是將字串abc賦給a,而是「建立一個常字串abc,並將首地址(第一個字元的地址,這裡就是a的地址)賦給指標變數a。

以後就可以通過指標a來操作字串abc了,這裡指標a也不能再讓它指向別處,否則abc就再也找不到了……希望能幫到你。

7樓:聽不清啊

a=(char *)malloc(10*sizeof(char));

a="abc";

這兩個語句bai重複給 a 賦值du

,前一個賦值就作廢zhi了,申請到的空間dao也就被丟棄了。

下面版一個賦值是讓a指向一

權個系統中字元常量區的地址(只是把一個地址賦值給a,並不是把字串賦值給a)。

8樓:匿名使用者

因為字元指標變數可以儲存字串的首地址。所以這條賦值語句實質是把字串「abc」的首地址存入字元指標變數a中。並不需要分配動態記憶體。

9樓:匿名使用者

就算不動態分配也可以直接賦值啊。建議先學習一下什麼是指標,搞清楚指標和陣列的區別。

10樓:良德廉永安

1、之所以要bai動態的分配內

du存是因為有zhi些時候在編寫程式的dao時候無法確定專其佔用的記憶體大小,這個屬時候就可以動態的分配給其一段記憶體空間,等到程式執行時在具體確定所需要的記憶體單元空間。

2、動態分配的記憶體空間是在堆(heap)上申請的,這部分的記憶體空間是有程式設計師自己管理的,需要程式設計師自己負責這些記憶體空間的釋放,使用free函式。

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

11樓:匿名使用者

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

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

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

希望對你有幫助

c語言:char * =」abcdef」; char a[]=」abcdef」; 編譯之前的區別

12樓:匿名使用者

char * a = "abcdef";

表示的是:a是一

個字串指標,指向的是一個字串常量"abcdef",所以如果用*a =『x』這樣的重新賦值是不允許的(也就是修改字串常量"abcdef"是不允許的)。用a=這樣的賦值是可以的,也就是a指向了另外的地址。

char a = "abcdef";

表示的是:a是一個字元型陣列,並且初始化的數值是共有7個元素,那麼當然可以修改陣列中的數值。

13樓:匿名使用者

編譯之前的區別就是指標定義錯了吧 *後邊得有識別符號 別的區別就是一個是指標型別 一個字元型別

chara1chara1有什麼區別

chara 1 chara 1唯一的區別是 chara 1 表示字元 1 被賦值給a。chara 1表示將ascii碼為1的字元賦給a。字元型別可以在ascii值和字母之間自動轉換 在編寫chara 5時,ascii值為5的符號是類似於梅花的符號,而ascii 0的符號是空字元。例 char型別是字...

用C語言程式設計,定義字串,chara

不是的char a 10 分配10個元素的空間,char a 和 char a 是一樣的,不分配空間。c語言字串問題,求正確答案和解釋 假設已定義char a 10 和char p a,下面的賦 正確答案是d a錯誤,因為a 10 代表一個字元是吧,不能賦值字串b錯誤是因為 陣列名不能當左值,也就是...

c語言chara0x800100問a5等於多少

指標 1是 指標指向空間大小 sizeof char 是1對應是加1 5,int 的話就是4 5 c語言裡面char a是什麼意思a 1又是什麼 char a 定義了一個字串指標 a 1,是指a中儲存的記憶體地址加1 c語言中char a char a什麼意思?定義一個儲存char型變數地址的指標q...