Linux C基礎筆記(3)
補充申明:Linux C基礎筆記共分為四部分,第一部分是Linux下基本指令,以及vi編輯器的使用還有C中的資料類型,第二部分為運算符、常量變量和輸入輸出。第三部分是控制語句、數組、字元串函數。第四部分為指針、函數以及配置設定記憶體管理。在寫完這四部分之後我會繼續上傳資料結構、IO、以及網絡程式設計的學習筆記,大家如果有需要學習Linux下程式設計的可以關注一下,我會将我所有的學習筆記釋出在此供大家一起學習。(在筆記裡面會有一些其他部落客的總結,如果涉及到實屬抱歉,您可以通過郵箱聯系我,我會及時修改。[email protected])。
【0】控制語句
分支語句和循環語句
分支語句
if...else...
(1)簡化形式
if(表達式)
{
語句塊1
}
else
{
語句塊2
}
(2)階梯形式
if(表達式1)
{
語句塊1
}
else if(表達式2)
{
語句塊2
}
....
else
{
語句塊n
}
(3)嵌套形式
if(表達式1)
{
語句塊1
}
else if(表達式2)
{
if(...)
{
...
}
else if(...)
{
...
}
else
{
...
}
}
....
else
{
語句塊n
}
備注:多個if與多個else if詳解:
if與多個else if是分枝情況。隻執行其中一條代碼,if與多個if是并列情況,會順序執行
如果是多個else if的話,隻要第一個if條件成立,即使滿足else if的條件也不會執行else if及else的内容
switch語句
switch (表達式)
{
case 常量表達式1:
語句塊1;
break;
case 常量表達式2:
語句塊2;
break;
…
case 常量表達式n:
語句塊n;
break;
default :
語句塊n+1
}
注意:
switch中的表達式可以是整型或字元型表達式
(也可以是枚舉類型,新标準的c語言允許為任意類型.)
每個常量表達式的值必須各不相同,否則将會出現沖突。
當表達式的值與case後面的常量表達式值相等時就執行此case後面的語句。
“case 常量:”隻起語句标号的作用。
break語句在switch中的作用:強行跳出switch體轉到其它某條語句,每個case後面應有一個break語句(否則程式的執行順序将改變),default分支後的break可以省略。
各個case出現的先後順序不影響程式的執行結果.
多個case可以執行一組語句.
【1】控制語句之循環語句
注意:所有的循環語句都需要一個結束标志,如果沒有,會是一個死循環
1.goto循環(一般不介意使用,除非是在核心開發中使用)
本質實作的是一個跳轉功能,在一個函數體内部執行跳轉
next:
....
goto next;
2.while循環
先判斷,後執行
while(表達式)
{
語句塊
}
3.do...while循環
先執行後判斷
do{
語句塊
}while(表達式);
4.for循環
for(表達式1;表達式2;表達式3)
{
語句塊
}
執行過程:
先執行表達式1,在執行表達式2,如果表達式2成立,則執行語句塊,
再執行表達式3,執行表達式2,如果成立,再執行語句塊
表達式1:一般為對變量進行初始化
表達式2:一般是一個判斷條件,如果不成立,則結束整個for循環
表達式3:一般是循環語句的結束标志,如果表達式2為假,進而結束整個循環
……
【2】數組
1.一維數組
聲明數組 type arrayName [ arraySize ]; double balance[10];
初始化數組 double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
冒泡排序: for(i = 0;i<n-1;i++) {
for(j = 0;j<n-1-i;j++){
if(a[j]>a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
簡單快速排序法
每次拿前一個資料與後面的所有的資料進行比較,将最小的資料放在前一個位置,以此類推
2.二維數組
聲明數組 type arrayName [ x ][ y ];
初始化 int a[3][4] = {
{0, 1, 2, 3} , /* 初始化索引号為 0 的行 */
{4, 5, 6, 7} , /* 初始化索引号為 1 的行 */
{8, 9, 10, 11} /* 初始化索引号為 2 的行 */
};
int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
備注:行可以省略,列不可以省。
【3】字元串函數
#include <string.h>
size_t strlen(const char *s);
功能:計算一個字元串的長度
參數: s:指定的字元串的首位址
傳回值:字元串的長度
#include <string.h>
char *strcpy(char *dest, const char *src);
功能:将src的資料指派給dest,包括src的\0也會一起複制
參數:dest:目的字元串的首位址
src:源的字元串的首位址
傳回值:與dest的值一樣
注意:必須保證dest足夠大,否則會記憶體溢出
#include <string.h>
char *strcat(char *dest, const char *src);
功能:拼接兩個字元串,将src的資料追加到dest的後面,從destz\0的位置開始追加
參數:dest:目的字元串的首位址
src:源的字元串的首位址
傳回值:與dest的值一樣
注意:必須保證dest足夠大,否則會記憶體溢出
#include <string.h>
int strcmp(const char *s1, const char *s2);
功能:比較兩個字元串的内容
參數: s1,s2:要比較字元串
傳回值:>0 s1 > s2
=0 s1 = s2
<0 s1 < s2
int strncmp(const char *s1, const char *s2, size_t n);
功能:比較字元串前n個字元是否相等
參數:s1:第一個字元串,s2:第二個字元串,n 前n個字元
4【<string.h>】
size_t strlen(const char *s) 求字元串長度
char *strcpy(char *dst, const char *src); 字元串複制
char *strcat(char *dse, const char *src); 字元串連結
int strcmp(const char *str1, const char *str2); 字元串比較
char *strchr(char *str,char c); 查找字元c第一次出現的位置
char ^strstr(const char *str1,const char *str2); 查找子串h