日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C语言 字符串

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1,一維字符數組

(1)定義

char 數組名 [大小];

(2)初始化字符數組

char s[7]={'h','a','a','p','y'} //其余不確定

char s[ ]=.......? ? ? ? ?//編譯器會計算出數組大小?

static char s[7]={'h','a','a','p','y'}? //其余為0? ?所代表的是字符? ?'\0'

2,字符串

(1)特點

  1. 字符串的有效長度==有效字符個數
  2. 字符串由 有效字符 和 字符串結束符'\0'組成
  3. "Happy"由6個字符組成? 'H' 'a' 'p' 'p' 'y' '\0'
  4. 字符串輸入數組時,數組長度==有效字符數+1

(2)初始化

以"Happy"為例子

static char s[6]={'H','a','p','p','y','\0'}

static char s[6]="Happy"? ? ? //注意是雙引號

static char s[6]={"Happy"}

(3)字符串輸入和賦值

A.輸入

?static char s[80];

s[0]='a';

s[1]='\0';

B.賦值

static char s[80];

s="a";

"a"和'a'區別:

"a"是由'a' and '0' 兩個字符組成

'a'單指一個字符

(4)其他

static char s[80]="Happy";?

只對前六個賦值,字符串遇到'\0'結束,所以不用擔心。'\0'之后的其他元素和字符串無關。

'\0'不是指ASCII碼值,它是字符,它的ASCII碼值是0,也就是ASCII碼表的第一個字符。'\0'并非是空格,空格的ASCII碼值是32,只不過是輸出類似于空格。

記得將輸入結束符轉換為'\0'.

(5)易錯

1. 下述對C語言字符數組的描述中錯誤的是(C)。

A.不可以用關系運算符對字符數組中的字符串進行比較

B.字符數組中的字符串可以整體輸入、輸出

C.可以在賦值語句中通過賦值運算符"="對字符數組整體賦值

D.字符數組可以存放字符串

A? ?“不可以用關系運算符對字符數組中的字符串進行比較。可以用關系運算符對字符進行操作,卻不能對字符串進行操作

B?在C語言中,字符數組可以存放字符串。字符數組是對字符串有特殊處理能力的數組。字符數組就是用來對字符串進行操作的,當然可以存放字符串,且可以對字符串進行整體輸入、輸出。

C 數組的賦值操作是不能整體操作的,而需要對其中元素逐個賦值,字符數組也不例外。

不可以用賦值語句給字符數組整體賦一串字符.
char mark[80];
mark=“happy”;當字符串變量是用的字符數組,不能由賦值語句直接賦字符串常量.
char Str_1[10]=“hello”;
char Str_2[10];
Str_2=Str_1;以上賦值時不允許的

D 字符數組存放字符串方法如下

static char s[6]="Happy";

3,字符串再次探討

(1)字符串基本特征(補充)

  1. 字符串是以 0或'\0'結尾的一串字符

  2. 0標志字符串的結束,但它不是字符串的一部分。計算字符串長度的時候不包含這個0

  3. ?string.h里有很多處理字符串的函數

a[ ]={'h','e','l','l','a'}

b[ ]={'h','e','l','l','a','\0'}

b是字符串,a不是

(2)字符串常量

  • "hello"
  • "happy"會被編譯器變成一個字符數組放在某處,長度為6,結尾還有表示結束的'\0'
  • 相鄰字符串,無其他符號,則會連在一起
  • #include <stdio.h>
    int main(){printf("你好,很高興""見到你,我很開心。");return 0;
    } 輸出:你好,很高興見到你,我很開心。
    ?????????

?字符串常量以字符數組的形式存在

不能進行運算

按照數組遍歷的方法,遍歷字符串

(3)字符串變量

char* str="happy"?

#include <stdio.h>
int main(){char* str="happy";  //初始化指向一個字符串常量char* str2="happy";int i=1;printf("i = %p\n",&i);printf("str = %p\n",str);printf("str2 = %p\n",str2);//str[0]='B';   //[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]printf("%c",str[0]);return 0;
} 輸出:
i = 000000000062FE0C
str = 0000000000404000
str2 = 0000000000404000

i是本地變量,我們發現變量i的內存地址遠遠大于str,str2。

而且更改字符串的話,出現了warning

  • 指針str,str2指向了一個很遠的地方。叫做代碼段。只讀,不可更改。所以更改字符串時出現了warning
  • 想要更改,使用字符數組

?

?

?(4)char* 是字符串?

  1. 字符串可以表達為char*
  2. char*不一定是字符串
  3. char* 本意是指向字符或字符數組的(類比 int*,指向整型,或整型數組)
  4. 只有當char* 指向的字符數組,最后一個是'\0'時,才可以稱char* 為字符串

?

?

?

總結

以上是生活随笔為你收集整理的C语言 字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。