判斷
C 語言把任何非零和非空的值假定為 true,把零或 null 假定為 false,
下面是大多數編程語言中典型的判斷結構的一般形式:

判斷陳述句
C 語言提供了以下型別的判斷陳述句,點擊鏈接查看每個型別的細節,
| 陳述句 | 描述 |
|---|---|
| if 陳述句 | 一個 if 陳述句 由一個布爾運算式后跟一個或多個陳述句組成, |
| if...else 陳述句 | 一個 if 陳述句 后可跟一個可選的 else 陳述句,else 陳述句在布爾運算式為假時執行, |
| 嵌套 if 陳述句 | 您可以在一個 if 或 else if 陳述句內使用另一個 if 或 else if 陳述句, |
| switch 陳述句 | 一個 switch 陳述句允許測驗一個變數等于多個值時的情況, |
| 嵌套 switch 陳述句 | 您可以在一個 switch 陳述句內使用另一個 switch 陳述句, |
還有我們前面學過的三元運算子也可以作為判斷陳述句使用
回圈
回圈陳述句允許我們多次執行一個陳述句或陳述句組,下面是大多數編程語言中回圈陳述句的流程圖:

回圈型別
C 語言提供了以下幾種回圈型別,點擊鏈接查看每個型別的細節,
| 回圈型別 | 描述 |
|---|---|
| while 回圈 | 當給定條件為真時,重復陳述句或陳述句組,它會在執行回圈主體之前測驗條件, |
| for 回圈 | 多次執行一個陳述句序列,簡化管理回圈變數的代碼, |
| do...while 回圈 | 除了它是在回圈主體結尾測驗條件外,其他與 while 陳述句類似, |
| 嵌套回圈 | 您可以在 while、for 或 do..while 回圈內使用一個或多個回圈, |
for回圈的結構體
for ( init; condition; increment )
{
statement(s);
}
回圈控制陳述句
回圈控制陳述句改變你代碼的執行順序,通過它你可以實作代碼的跳轉,
C 提供了下列的回圈控制陳述句,點擊鏈接查看每個陳述句的細節,
| 控制陳述句 | 描述 |
|---|---|
| break 陳述句 | 終止回圈或 switch 陳述句,程式流將繼續執行緊接著回圈或 switch 的下一條陳述句, |
| continue 陳述句 | 告訴一個回圈體立刻停止本次回圈迭代,重新開始下次回圈迭代, |
| goto 陳述句 | 將控制轉移到被標記的陳述句,但是不建議在程式中使用 goto 陳述句,因為它使得程式的控制流難以跟蹤,使程式難以理解和難以修改, |
如果您使用的是嵌套回圈(即一個回圈內嵌套另一個回圈),break 陳述句會停止執行最內層的回圈,然后開始執行該塊之后的下一行代碼,
對于 for 回圈,continue 陳述句執行后自增陳述句仍然會執行,對于 while 和 do...while 回圈,continue 陳述句重新執行條件判斷陳述句,
goto語法
goto label;
..
.
label: statement;
在這里,label 可以是任何除 C 關鍵字以外的純文本,它可以設定在 C 程式中 goto 陳述句的前面或者后面,
實體
#include <stdio.h>
int main ()
{
/* 區域變數定義 */
int a = 10;
/* do 回圈執行 */
LOOP:do
{
if( a == 15)
{
/* 跳過迭代 */
a = a + 1;
goto LOOP;
}
printf("a 的值: %d\n", a);
a++;
}while( a < 20 );
return 0;
}
當上面的代碼被編譯和執行時,它會產生下列結果:
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19
無限回圈
如果條件永遠不為假,則回圈將變成無限回圈,for 回圈在傳統意義上可用于實作無限回圈,由于構成回圈的三個運算式中任何一個都不是必需的,您可以將某些條件運算式留空來構成一個無限回圈,
#include <stdio.h>
int main ()
{
for( ; ; )
{
printf("該回圈會永遠執行下去!\n");
}
return 0;
}
當條件運算式不存在時,它被假設為真,您也可以設定一個初始值和增量運算式,但是一般情況下,C 程式員偏向于使用 for(;?? 結構來表示一個無限回圈,
注意:您可以按 Ctrl + C 鍵終止一個無限回圈,
函式
每個 C 程式都至少有一個函式,即主函式 main() ,所有簡單的程式都可以定義其他額外的函式,
可以把代碼劃分到不同的函式中,如何劃分代碼到不同的函式中是由你自己來決定的,但在邏輯上,劃分通常是根據每個函式執行一個特定的任務來進行的,
函式宣告告訴編譯器函式的名稱、回傳型別和引數,函式定義提供了函式的實際主體,
C 標準庫提供了大量的程式可以呼叫的內置函式,例如,函式 strcat() 用來連接兩個字串,函式 memcpy() 用來復制記憶體到另一個位置,
函式還有很多叫法,比如方法、子例程或程式,等等,
定義函式
C 語言中的函式定義的一般形式如下:
return_type function_name( parameter list )
{
body of the function
}
在 C 語言中,函式由一個函式頭和一個函式主體組成,下面列出一個函式的所有組成部分:
- 回傳型別:一個函式可以回傳一個值,return_type 是函式回傳的值的資料型別,有些函式執行所需的操作而不回傳值,在這種情況下,return_type 是關鍵字 void,
- 函式名稱:這是函式的實際名稱,函式名和引數串列一起構成了函式簽名,
- 引數:引數就像是占位符,當函式被呼叫時,您向引數傳遞一個值,這個值被稱為實際引數,引數串列包括函式引數的型別、順序、數量,引數是可選的,也就是說,函式可能不包含引數,
- 函式主體:函式主體包含一組定義函式執行任務的陳述句,
實體
以下是 max() 函式的源代碼,該函式有兩個引數 num1 和 num2,會回傳這兩個數中較大的那個數:
/* 函式回傳兩個數中較大的那個數 */
int max(int num1, int num2)
{
/* 區域變數宣告 */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
函式宣告
函式宣告會告訴編譯器,函式名稱及如何呼叫函式,函式的實際主體可以單獨定義,
函式宣告包括以下幾個部分:
return_type function_name( parameter list );
針對上面定義的函式 max(),以下是函式宣告:
int max(int num1, int num2);
在函式宣告中,引數的名稱并不重要,只有引數的型別是必需的,因此下面也是有效的宣告:
int max(int, int);
當您在一個源檔案中定義函式且在另一個檔案中呼叫函式時,函式宣告是必需的,在這種情況下,您應該在呼叫函式的檔案頂部宣告函式,
呼叫函式
創建 C 函式時,會定義函式做什么,然后通過呼叫函式來完成已定義的任務,
當程式呼叫函式時,程式控制權會轉移給被呼叫的函式,被呼叫的函式執行已定義的任務,當函式的回傳陳述句被執行時,或到達函式的結束括號時,會把程式控制權交還給主程式,
呼叫函式時,傳遞所需引數,如果函式回傳一個值,則可以存盤回傳值,例如:
#include <stdio.h>
/* 函式宣告 */
int max(int num1, int num2);
int main ()
{
/* 區域變數定義 */
int a = 100;
int b = 200;
int ret;
/* 呼叫函式來獲取最大值 */
ret = max(a, b);
printf( "Max value is : %d\n", ret );
return 0;
}
/* 函式回傳兩個數中較大的那個數 */
int max(int num1, int num2)
{
/* 區域變數宣告 */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
把 max() 函式和 main() 函式放一塊,編譯源代碼,當運行最后的可執行檔案時,會產生下列結果:
Max value is : 200
函式引數
如果函式要使用引數,則必須宣告接受引數值的變數,這些變數稱為函式的形式引數,
形式引數就像函式內的其他區域變數,在進入函式時被創建,退出函式時被銷毀,
當呼叫函式時,有兩種向函式傳遞引數的方式:
| 呼叫型別 | 描述 |
|---|---|
| 傳值呼叫 | 該方法把引數的實際值復制給函式的形式引數,在這種情況下,修改函式內的形式引數不會影響實際引數, |
| 參考呼叫 | 通過指標傳遞方式,形參為指向實參地址的指標,當對形參的指向操作時,就相當于對實參本身進行的操作,傳遞指標可以讓多個函式訪問指標所參考的物件,而不用把物件宣告為全域可訪問, |
參考呼叫
/* 函式定義 */
void swap(int *x, int *y)
{
int temp;
temp = *x; /* 保存地址 x 的值 */
*x = *y; /* 把 y 賦值給 x */
*y = temp; /* 把 temp 賦值給 y */
return;
}
如需了解 C 中指標的更多細節,請訪問 C - 指標 章節,
現在,讓我們通過參考傳值來呼叫函式 swap()
#include <stdio.h>
/* 函式宣告 */
void swap(int *x, int *y);
int main ()
{
/* 區域變數定義 */
int a = 100;
int b = 200;
printf("交換前,a 的值: %d\n", a );
printf("交換前,b 的值: %d\n", b );
/* 呼叫函式來交換值
* &a 表示指向 a 的指標,即變數 a 的地址
* &b 表示指向 b 的指標,即變數 b 的地址
*/
swap(&a, &b);
printf("交換后,a 的值: %d\n", a );
printf("交換后,b 的值: %d\n", b );
return 0;
}
當上面的代碼被編譯和執行時,它會產生下列結果:
交換前,a 的值: 100
交換前,b 的值: 200
交換后,a 的值: 200
交換后,b 的值: 100
上面的實體表明了,與傳值呼叫不同,參考呼叫在函式內改變了 a 和 b 的值,實際上也改變了函式外 a 和 b 的值,
默認情況下,C 使用傳值呼叫來傳遞引數,一般來說,這意味著函式內的代碼不能改變用于呼叫函式的實際引數,
參考自:https://www.runoob.com/cprogramming/c-tutorial.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/208272.html
標籤:C
上一篇:快速排序
下一篇:微信小程式開發之云開發
