1樓:匿名使用者
不是的char a[10] 分配10個元素的空間,
char a 和 char *a 是一樣的,不分配空間。
c語言字串問題,求正確答案和解釋 假設已定義char a[10]和char *p=a, 下面的賦
2樓:匿名使用者
正確答案是d
a錯誤,因為a[10]代表一個字元是吧,不能賦值字串b錯誤是因為 陣列名不能當左值,也就是陣列名不能被賦值c和a同樣的錯誤,*p代表的是a[0]
d是正確的給指標賦值字串是可以的
c語言中char *a[ ]什麼意思,他和char (*)a[ ]有什麼什麼區別?
3樓:匿名使用者
char *a表示的是陣列a是一個指向char的指標型別陣列,相當於a裡面的每一個元素都實際值都是一個指向字串的指標(即儲存某個字串的首地址)
後面這個你應該要問的是char (*a)吧,不然的話就和第一個一樣了
char (*a) [n]表示的是指向一個元素為n的字串陣列的指標,說白了就是一個陣列指標(指向陣列的指標)。這個和函式指標有點像 int (*p) (int,int),表示指向返回值為int,並且含有2個int變數的函式
4樓:凌亂心扉
兩者區別如下:
一、」讀「」寫「能力
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,防止產生野指標。
5樓:匿名使用者
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型別
6樓:狂盜一枝梅
char *a一般用於函式中形參的宣告,特別只用於一維陣列;char(*)a不明白什麼意思,難不成是將a陣列強制轉換成字元型???只是猜測,不要多想呵。
7樓:楊武威
char *a[ ]相當於char** a,是指標的指標;
char (*)a[ ] 是char型別指標陣列;
(純屬個人理解,僅供參考)
8樓:小小的
含義是一樣的。其實陣列也是指標。都是宣告瞭a這個char*型別陣列。雖然有語法錯誤,但是意思是那樣的。
9樓:匿名使用者
char* a:a首先是個陣列,陣列中的每個元素是char*型別的,也就是每個元素是一個指向char型別的指標,至於char(*)a,圓括號一般是用作強制型別轉換的,這種寫法沒有見過,編譯器應該分析不出這個語法,會報錯
10樓:快來見本大人
char *a[ ] 表示一個陣列a,陣列裡的元素型別是char *
char (*)a[ ] 表示一個指標變數a,指向的變數型別是 char 的陣列
c語言程式設計:輸入一個以回車結束的字串a(少於80個字元),再輸入一個字串b,統計並輸出b在a中出現的
11樓:匿名使用者
以下是我給你編的程式,我試了,可以執行的,結果是對的,但是可能輸出的格式不符合你的要求,你告訴我,我再改,我已經加了註釋了,看不懂的就問我。希望能幫到你。
#include"stdio.h"
int input1(char a) //a陣列的輸入,返回的是a陣列的長度
return i-1; //i-1即為陣列長度。
}int input2(char a,int len) //len為a陣列的長度,返回的是陣列b的長度
//以上和input1相同。
if(len return 0; else return i-1; //返回i-1,因為它是b陣列的長度 }int work(char a,char b,int len1,int len2) //len1,len2分別為陣列a,b的長度 else if(temp!=b[j]) break; }i++; //找下一個a中的元素,來等待下一個迴圈。 temp=i; //temp隨時要和i一致的 j=0; //每換一個a中的元素的話,如果和b[0]相等的話,b中的序列要從頭比起 }return n; }void main() 12樓: //#include "stdafx.h"//if the vc++6.0, with this line. #include "stdio.h" #include "string.h" int main(void) 13樓:匿名使用者 利用庫函式,strstr,或者自己實現,因為長度較短,所以普通的演算法就可以。 若char a[10];已正確定義,以下語句中不能從鍵盤上給a陣列的 所有元素輸入值的語句是()。 a、for(i=0;i<1 14樓:匿名使用者 因為a預設的是陣列中第一個值,,即a[0]。所以d選項只給a[0]賦了值! 15樓:匿名使用者 a=getchar(); 用拼接符可以做到 define string arg aaaaaaa arg bbbbbbbbbb 但arg必須是個常量,不能是變數 c語言,將數字和字串拼成一個字串。用巨集來做,用api誰都會 巨集定義字串拼接可以使用巨集運算 即 define strcat x,y x y。運算子可以將兩個記號版... include int s int a 100 100 int x,int y min a 0 k p 0 for j 0 j int main printf 對角線之和為 d n sum return 0 include int main for i 0 i printf 轉置矩陣為 n for ... 加了 符號的字元,例如 c 3 在c語言中,由零個或多個字元組成且通過雙引號括起來的有限序列就叫字串.例如 hello world 我愛中國 a 123456 等等.另外字串在記憶體中是由字元型陣列來儲存的.且在儲存的時候多加 0 表示字串已經結束.例如 char string 12 hello w...c語言巨集定義字串問題,C語言巨集定義字串問題
c語言 陣列與字串 程式設計題,C語言 陣列與字串 程式設計題
C語言中什麼是字串,C語言中如何定義字串?