1樓:匿名使用者
首先你的問題有問題應該是
char a="abc"與char a=
區別字串以'/0'結束
c語言中char *a[ ]什麼意思,他和char (*)a[ ]有什麼什麼區別?
2樓:匿名使用者
char *a表示的是陣列a是一個指向char的指標型別陣列,相當於a裡面的每一個元素都實際值都是一個指向字串的指標(即儲存某個字串的首地址)
後面這個你應該要問的是char (*a)吧,不然的話就和第一個一樣了
char (*a) [n]表示的是指向一個元素為n的字串陣列的指標,說白了就是一個陣列指標(指向陣列的指標)。這個和函式指標有點像 int (*p) (int,int),表示指向返回值為int,並且含有2個int變數的函式
3樓:凌亂心扉
兩者區別如下:
一、」讀「」寫「能力
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,防止產生野指標。
4樓:匿名使用者
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型別
5樓:狂盜一枝梅
char *a一般用於函式中形參的宣告,特別只用於一維陣列;char(*)a不明白什麼意思,難不成是將a陣列強制轉換成字元型???只是猜測,不要多想呵。
6樓:楊武威
char *a[ ]相當於char** a,是指標的指標;
char (*)a[ ] 是char型別指標陣列;
(純屬個人理解,僅供參考)
7樓:小小的
含義是一樣的。其實陣列也是指標。都是宣告瞭a這個char*型別陣列。雖然有語法錯誤,但是意思是那樣的。
8樓:匿名使用者
char* a:a首先是個陣列,陣列中的每個元素是char*型別的,也就是每個元素是一個指向char型別的指標,至於char(*)a,圓括號一般是用作強制型別轉換的,這種寫法沒有見過,編譯器應該分析不出這個語法,會報錯
9樓:快來見本大人
char *a[ ] 表示一個陣列a,陣列裡的元素型別是char *
char (*)a[ ] 表示一個指標變數a,指向的變數型別是 char 的陣列
在c語言中char a[]={'a','b','c'}和char a[]="abc"有什麼區別 它們各在記憶體裡佔多少和位元組
10樓:匿名使用者
char a= 這是一個字元陣列,佔3個位元組。 char a="abc" 則不同,它是一個字串,最後還有一個'\0'結束符,佔4個位元組
char *a;a="abc"與char*a;*a="abc"char *a="abc"有什麼區別嗎?
11樓:
1,char*a;*a="abc" 是錯誤的, *a是字元,不是字串。
2,另外兩句完全一樣。雖然編譯能通過,但是你這句本身就是錯誤的:字串定義應該是 const char *a = "abc"; 因為字串儲存在不可讀記憶體中,所以c語言中字串的的返回值是 const char*.
3, 如果要得到能讀寫的字串請使用字元陣列: char a = "abc"
12樓:
char *a;
a = "abc";
和char *a;
*a = "abc";
作用相同 就是將字串陣列的首地址給char 指標變數a(假設16位地址值,要被截斷成8位
char *a =「abc」 可以看作是 char a="abc";
13樓:太叔青芬俞環
不行p1沒有初始化(也就是常說的野指標),它指向的空間是未知的先初始化:
p1=char(**)malloc(10*sizeof(char*));
//分配10個char*的空間
p1[0]=(char*)malloc(sizeof(a));
//給p1[0]分配合適空間
strcpy(p1[0],p)
//現在可以了
c語言:char * =」abcdef」; char a[]=」abcdef」; 編譯之前的區別
14樓:匿名使用者
char * a = "abcdef";
表示的是:a是一
個字串指標,指向的是一個字串常量"abcdef",所以如果用*a =『x』這樣的重新賦值是不允許的(也就是修改字串常量"abcdef"是不允許的)。用a=這樣的賦值是可以的,也就是a指向了另外的地址。
char a = "abcdef";
表示的是:a是一個字元型陣列,並且初始化的數值是共有7個元素,那麼當然可以修改陣列中的數值。
15樓:匿名使用者
編譯之前的區別就是指標定義錯了吧 *後邊得有識別符號 別的區別就是一個是指標型別 一個字元型別
c語言中char是什麼意思呀,C語言中char是什麼意思?和char有什麼區別呀
char 字元型指標,指向一個字元 char 指向字元型指標的指標 char 最常使用在main函式中 int main int argc,char argv 等同於 int main int argc,char argv 等同於int main int argc,string argv c語言中並...
c語言中a與a有什麼區別,C語言中a與a的區別是什麼?詳細一點,謝謝!
這要看a是什麼了,如果a是指標變數,那麼a代表這個指標變數,a代表這個指標變數所指向的目標。如果不是指標那麼 a不是正確的寫法。c語言中a 與 a的區別是什麼?詳細一點,謝謝!a 是先返回a的值,再執行 運算。a 是先執行 運算,在返回a的值。例如 include int main a 7a 先使用...
char和char有什麼區別,C語言中char 是什麼意思? 和char 有什麼區別呀
char c與char c 沒有任何區別 char c和char c 有區別,char c是一個字元,char c是char指標,他可以帶表一個字串引用。沒有什麼不同,都是定義一個指向char型的指標但是要注意的是如果你想在一句話裡面2個指標,那麼正確的做法應該是char a,b 而不是char a...