適合初學者的C語言字符串講解
這一篇博客我們來了解一下字符串,看下面這個我們熟知的也是最先學習的代碼
"Hello world!"
這一堆的字母就是字符串字面值,簡稱字符串,每一個字母都是一個字符,字符串需要用" "雙引號來引起,字符需要用’ '單引號來引起,就像下面
"Hello world!" //字符串
'a' //字符
'!' //字符
字符串也算常量,上面三條都算字面常量,之前的講常量的時候就舉過這種例子
那么字符串有什么用呢?
假設我們要把下面的字符串存起來,那么我們需要怎么存呢?
"abcdef"
我們可以把它放在字符串數(shù)組里,有兩種形式如下:
#include<stdio.h>
int main()
{
char arr1[10]="abcdef"; //形式一
char arr2[10]={'a','b','c','d','e','f'}; //形式二
//我們打印一下這些字符串
printf("%s\n",arr1);
printf("%s\n",arr2);
return 0;
}
運行的結果:
abcdef
abcdef

把"abcdef"都存在arr[ ]這個數(shù)組里面,[ ]里面數(shù)是多少,就能存多少字符
arr[10]可以存10個字符 ,但一定要不小于你要存的字符
你也可以不寫[ ]里面的數(shù)字,它會自己根據(jù)你要存的字符串來調(diào)整,就像這樣
#include<stdio.h>
int main()
{
char arr[]="abcdef"; //char-字符類型,沒有字符串類型哦
return 0;
}
那這兩種形式有什么區(qū)別呢?
我們不寫arr[ ]里面的數(shù)字,我們來看一下
#include<stdio.h>
int main()
{
char arr1[]="abcdef";
char arr2[]={'a','b','c','d','e','f'};
//我們打印一下這些字符串
printf("%s\n",arr1);
printf("%s\n",arr2);
return 0;
}
運行的結果:
abcdef
abcdef燙燙燙燙燙abcdef

哎,發(fā)現(xiàn)沒有,它們不一樣了,那為什么會出現(xiàn)這種情況呢?
先想一個問題,它是根據(jù)什么來停止打印的?
(啊,你會問:它們后面啥都沒有,我怎么會知道它們根據(jù)什么來停下來的)
那里確實看不見有什么標志,但是那個標志就是看不見的,字符串的結束標志是\0,它是一個我們馬上就會學到的轉(zhuǎn)義字符
char arr1[]="abcdef";
這個形式一,字符串后面就默認帶了一個\0
char arr2[]={'a','b','c','d','e','f'};這個形式二,后面沒有\(zhòng)0
懂了吧,printf去打印的時候要識別到\0才會結束
第一個形式最后一個字符結束就識別到了\0,然后結束
第二個形式識別到最后的f,一直都沒有識別到\0,就一直打印下去,最后就出現(xiàn)剛才的結果
那么如果我們給第二個形式加一個\0作為結束標志怎么樣,不要光想,我們來做一下試試
#include<stdio.h>
int main()
{
char arr1[]="abcdef\0"; //我們也試一下給它也加一個\0
char arr2[]={'a','b','c','d','e','f','\0'};
//我們打印一下這些字符串
printf("%s\n",arr1); //%s是打印字符串的
printf("%s\n",arr2); //%s是打印字符串的
return 0;
}
運行的結果:
abcdef
abcdef

結果運行正常了
那么\0算不算里面的字符串長度的一部分呢?
又來介紹一個好東西,strlen,它可以計算一個字符串長度的函數(shù),但是使用它還是跟以前一樣,需要給另一個頭文件string.h打一下招呼才能使用它,我們來實操一下:
#include<string.h>
#include<string.h>
int main()
{
char a[] = "abc";
char b[] = "abc\0";
printf("%d", strlen(a));
printf("%d", strlen(b));
return 0;
}
運行結果:
3
3

"abc"
這個字符串的長度為3,所以我們可以知道看不見的\0并不算在長度里面的,就算在后面加上\0也是一樣
大家可以試一試計算一下第二種形式不加\0情況下的字符串長度,保持好奇心,去自己嘗試一下。
就這樣,我們把"abcdef"這個數(shù)組儲存起來了,那我們要使用里面的字符怎么辦?我們還需要再了解一個知識:
調(diào)用arr里面字符,用arr[2]就可以調(diào)用c,用arr[0]就可以調(diào)用a,它們的對應關系也就是:
a b c d e f
0 1 2 3 4 5
我們來實驗一下
#include<stdio.h>
int main()
{
char arr[]="abcdef";
printf("%c",arr[2]);
return 0;
}
運行結果:
a

#include<stdio.h>
int main()
{
char arr[]="abcdef";
printf("%c",arr[0]);
return 0;
}
運行結果:
a

到此這篇關于適合初學者的C語言字符串講解的文章就介紹到這了,更多相關C語言 字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
matlab鳥群算法求解車間調(diào)度問題詳解及實現(xiàn)源碼
這篇文章主要為大家介紹了matlab鳥群算法求解車間調(diào)度的問題分析及實現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-02-02

