C語言基礎02(關鍵字)-下,其他

return:返回函數的返回值

extern:表明該變量或函數都是在別的文件中定義的

提示編譯器在其他文件中尋找定義。

extern “c”:爲了能夠正確實現C++代碼調用其他C語言代碼。
//不可以將extern"C" 添加在函數內部

break;continue;auto

break:跳出代碼體(如循環體和if代碼體)

continue:跳過本次循環,執行下一次循環

auto:局部變量(自動儲存)

sizoef計算表達式或數據類型的佔用字節數


const(修飾的常類型數據)、static(定義靜態變量)、final(限制繼承、覆蓋)

一、const(修飾的長類型數據):
爲了取代預編譯指令,消除它的缺點,同時繼承它的優點,常類型的變量或對象的值是不能被更新。

const常量有數據類型,編譯器可以進行類型安全檢查,調試工具可以對const常量進行調試。

const char* 的意思是創建一個指向char類型的指針且不能更改指向地址上的值,
char* const則是不能更改指向的地址;

char* const p : 定義一個指向字符的指針常數,即const指針,常量指針。
const char* p :定義一個指向字符型常量的指針。



二、static(定義靜態變量):
1.靜態存儲類型:
函數內定義(靜態局部變量):僅定義一次,變量存在內存的靜態區,函數結束靜態變量的值也不銷燬,函數下次運行時能仍用。

函數外定義(靜態全局變量):變量的作用域只在定義該變量的文件中,不能被其他文件通過extern引用。

2 內部鏈接屬性
靜態函數只能在聲明它的源文件中使用。


三、final(C++):
1、用來修飾類,讓該類不能被繼承,理解:使得該類終結!
final關鍵字只能放在類名的後面!

class XiaoMi2 final   {
	XiaoMi2(){}
};

2、修飾虛函數,防止其被覆蓋(重寫)。理解:使得該功能終結!
final只能放在放在函數符()的後面,只能用來修飾虛函數,不能用來修飾普通的函數!

class XiaoMi {
public:
	virtual void func() final;
};




typedef換名

typedef(爲一種數據類型定義一個新名字),包括基類型/自定義類型(struct等)

1.typedef int A;
⇒以後A出現等同於int出現(替換字符),A是類型

2.typedef struct str A;
⇒struct str是一個定義的結構體類型,換名爲A(也是類型)

3.typedef struct str {}*A;
等同於typedef (struct str *)A
A是 指向struct str類型的指針類型

4.typedef int A[5];
等同於typedef int[5] A;
A是一個指向五個整形變量的數組類型


if語句(非零即執行)

布爾變量:if(false) 不執行後面的語句
true被翻譯(定義)爲1,false被翻譯爲0
也就是說if本質上判斷的是否爲0

指針變量:if(NULL) 不執行後面的語句
NULL被定義爲0
注意未賦值(野指針,隨機指向),會執行後面的語句

整形變量:if(0) 不執行後面的語句
注意int a;if(a) 會執行後面的語句
a隨機指向一個數字,有相應的內存空間,不爲0

if(-1),if(100) 會執行後面的語句

java中僅支持if(bool表達式)


switch case

switch語句原理:跳轉到caseX位置執行剩下的語句,直到最後或者遇見break爲止。
switch case會生成一個跳轉表來指示實際的case分支的地址,而if…else卻需要遍歷條件分支直到命中條件,

  int k=1;
    switch(k)
    {
    case 1:
    case 2: printf("執行2");
    case 3:printf("執行3");break;
    case 4:printf("不執行4");
    }

先跳轉到case,沒有再跳到break執行剩下的語句

    int k=3;
    switch(k)
    {
    case 1:
    default: printf("不執行default");
    case 3:printf("執行3");break;
    }

循環結構

while(表達式)

其中,表達式是循環條件,語句爲循環體。
計算表達式的值,當值爲真(非0)時,執行循環語句,然後在判斷表達式,直到表達式爲假(0)時結束循環。

while(2)
{
 cout<<"hello";break;
}

do語句;while (表達式);

先執行循環語句一次,在判別表達式的值,若爲真,則繼續循環;否則中止循環。
do-while 至少要執行一次循環體

do{
    cout<<"hello";
}
while(0);

for循環(for中聲明的變量作用域只在for中)

形式:for(; ; ) 語句;

一般語法格式:
for(初始化;條件表達式;增量){循環體}
其中,表示式可以省略,但是分號不可省略。

表達式1:初始化,是一個賦值語句,它用來給循環控制變量賦初值;

表達式2:條件表達式,是一個關係表達式, 它決定什麼時候退出循環;

表達式3:增量,定義循環控制變量每循環一次後 按什麼方式變化。


循環區別與轉換

for:知道循環次數,先判斷後循環

while:不知道循環次數,先判斷後循環

dowhile:不知道循環次數。先循環後判斷

while有時候不能換成for,for都能換成while。
因爲for循環適用於已知循環次數,while循環還適用於未知循環次數的時候



跳過循環(break、continue)

跳過當前循環:
1)使用continue來跳過當前循環,直接進入下個循環
2)使用break來跳出當前循環;結束當前for循環

跳出多重for循環:
1)label語句
跳出多重for循環:

   jump:
    for (var i = 0; i < 3; i++){
      for (var j = 0; j < 3; j++){
        if (i === 1 && j === 1) {
          break jump;
        }

跳出代碼塊:

jump: {
  console.log(1);
  break jump; 
  console.log('不會輸出');
}

2)使用function

function jumpFor() {
  for(var k=0;k<8;k++){
     for(var j=0;j<4;j++){
        if(k == j ){return false;}
        console.log(k,j)
     }
   }
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章