c語言的字串宣告問題,C語言的字串宣告問題

時間 2021-12-19 14:31:48

1樓:匿名使用者

簡單說一下:

字串陣列是用來存放字串的陣列,在記憶體中佔一段連續的單元。所佔記憶體存放的是字串。定義方法為:

char a[n];n為常量表示式,可初始化。字元指標是指向字元的指標,所佔記憶體單元存放的是所指字元的記憶體單元。定義方法為:

char *p;

完整的解答:

1)字元陣列由若干個元素組成,每個元素中放乙個字元,而字元指標變數中存放的位址(字串第乙個字元的位址),決不是將字串放到字元指標變數中

2)賦值方式

對於字元陣列只能對各個元素賦值,不能用以下辦法對字元陣列賦值:

char str[14];

str = "i love you!";

而對於字元指標變數,可採用如下賦值:

char *a;

a = "i love you!";

賦值給a的是字串第乙個元素的位址

3)對字元指標賦初值

char *a = "i love you!";

等價於char *a;

a = "i love you!";

而對陣列的初始化:

char str[14] = ;

不等價於

char str[14];

str = "i love you!";

4)如果定義了乙個字元陣列,在編譯時為它分配記憶體單元,它有確定的位址。而定義乙個字元指標變數時,給指標變數分配記憶體單元,在其中可以放乙個字元變數的位址

char *a, str[10];

a = str;

scanf("%s", a);

先使a有確定值,即使a指向乙個陣列的首元素,然後輸入乙個字串,把它存放在以該位址開始的若干單元中

5)指標變數的值是可以改變的,而陣列名是常量

6)用指標變數指向乙個格式字串,可以用它代替printf函式的格式字串

char * format;

fomat = "a = %d, b = %f\n"

printf(format, a, b);

相當於printf("a = %d, b = %f\n", a, b);

因此只要改變printf所指向的字串,就可以改變輸入輸出格式,這種printf函式稱為可變格式輸出函式

也可以用字元陣列實現:

char format;

format = "a = %d, b = %f\n"

可以看出,用指標變數指向字串更簡潔

參考資料

2樓:匿名使用者

第乙個是char型指標a是個指標變數.而第二個是字元陣列.相當於char b = ;

3樓:張濤我愛你

比如 char name[4];和char *name;

用的時候就可以傳兩個的形式分別是:

name(這個是name的位址哦)和name(一樣的)其實後面的name就是存放的乙個位址,前面的那個其實本質上也是乙個位址,就是說在傳形參的時候完全一樣。

4樓:

關鍵是a = "string"; 非法

b = "string"; 合法

C語言關於字串的問題,C語言關於字串的乙個問題。。

你函式的功能是去處非字母字元,也就是刪除空格個!應該輸出itis 字串是自動加上結束識別符號的 0 遇到這個停止,但是輸出列印出來螢幕上看不到 暈,其實很簡單,因為空格就是空格符不是終止符號 0 c為從輸入的資料中取出的乙個字元,不應該是字串。比較是通過ascii編碼比較的。a z對應的ascii編...

C語言字串陣列的問題,C語言字串陣列的問題

scanf 輸入時不能讀取空格鍵的,所以a儲存的是123,b儲存的是456,當然由於你是用 s輸入的,會自動在123後面加上 0 0是乙個字串的結尾 printf s n s n a i b i 這句只會輸出null int a max b max 這兩個整形陣列儲存的全是0,int的 0轉化為字元...

c語言字串加密,C語言 字串加密

include include include int main void else else if c i a c i z else else printf s n c return 0 string a welcome string b null int num a.length int asc...

C語言拆分字串,C語言字串拆分

原始程式有錯 s要求char 引數 但是 sp i 為char型 應去掉 修改補充如下 include include void splitstr char s,char d if p 0 break p r i null d r int main include const int maxstrl...

c語言問題字串的複製,用C語言實現字串拷貝函式有幾種方式

目標字串的長度 源字串的長度,否則會出不可預知的錯誤。這句話沒錯。你這第乙個程式執行應該是沒問題的,但是存在隱患。char c 20 b c 的意思就是把有20個字元的陣列首位址賦給了指標b 這樣b就有了指向的記憶體 而直接賦值 則只有首位址 你可以試 把陣列c賦值後 可以輸出20個不同的位址而 指...