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

2021-03-03 21:24:15 字數 3929 閱讀 1714

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();

c語言巨集定義字串問題,C語言巨集定義字串問題

用拼接符可以做到 define string arg aaaaaaa arg bbbbbbbbbb 但arg必須是個常量,不能是變數 c語言,將數字和字串拼成一個字串。用巨集來做,用api誰都會 巨集定義字串拼接可以使用巨集運算 即 define strcat x,y x y。運算子可以將兩個記號版...

c語言 陣列與字串 程式設計題,C語言 陣列與字串 程式設計題

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語言中什麼是字串,C語言中如何定義字串?

加了 符號的字元,例如 c 3 在c語言中,由零個或多個字元組成且通過雙引號括起來的有限序列就叫字串.例如 hello world 我愛中國 a 123456 等等.另外字串在記憶體中是由字元型陣列來儲存的.且在儲存的時候多加 0 表示字串已經結束.例如 char string 12 hello w...