C 基礎知識二

2021-08-08 23:39:55 字數 2229 閱讀 4402

一. 函式引數(c和c++)

#include // 如果乙個函式沒有引數,c++認為這是乙個無參函式,不能給函式傳參

void func()

// c語言中乙個無參函式定義是用void進行填充

void func1(void) // 等價於 func1()

// c++中函式引數必須要有型別

void func2(int a)

int main()

二. bool 型別關鍵字

c++中的布林型別

c++在c語言的基本型別系統之上增加了bool

c++中的bool可取的值只有true和false

理論上bool只占用乙個位元組,

如果多個bool變數定義在一起,可能會各佔乙個bit,這取決於編譯器的實現

true代表真值,編譯器內部用1來表示

false代表非真值,編譯器內部用0來表示

bool型別只有true(非0)和false(0)兩個值

c++編譯器會在賦值時將非0值轉換為true,0值轉換為false

#include int main()

if(!a)

//bool型別值有兩種:1 true ,0 false

//0 代表false,非 0 代表 true

bool型別的值值有0 和 1.

三. 三目運算子

#include int main()

1)c語言返回變數的值 c++語言是返回變數本身

c語言中的三目運算子返回的是變數值,不能作為左值使用

c++中的三目運算子可直接返回變數本身,因此可以出現在程式的任何地方

2)注意:三目運算子可能返回的值中如果有乙個是常量值,則不能作為左值使用

(a < b ? 1 : b )= 30;

3)c語言如何支援類似c++的特性呢?

====>當左值的條件:要有記憶體空間;c++編譯器幫助程式設計師取了乙個位址而已

四. c與c++中const 區別

c語言中的const

#include //c語言中const用來定義唯讀變數,不可變

int main()

c++中的const

#include int main()

c++編譯器對const常量的處理

當碰見常量宣告時,在符號表中放入常量  ==> 問題:那又如何解釋取位址

編譯過程中若發現對const使用了extern或者&操作符,則給對應的常量分配儲存空間(相容c)

但是編譯過程中若發現使用常量則直接以符號表中的值替換,即使給該常量分配了空間,也並不使用裡面的值

總結:c語言中的const變數

c語言中const變數是唯讀變數,有自己的儲存空間

c++中的const常量

可能分配儲存空間,也可能不分配儲存空間  

當const常量為全域性,並且需要在其它檔案中使用

當使用&操作符取const常量的位址

const 與 #define:

#define 在預編譯時進行處理,const編譯時進行處理,提供型別檢查和作用域檢查。巨集做簡單的文字替換,不會進行型別檢查和作用域的檢查。

巨集的作用域:從定義的位置開始到檔案結束

const作用域:當前 內。

void fun4()

void fun5()

內 //const是在編譯時進行處理,會進行型別減產 作用域檢查

printf("a = %d\n",a);

}int main()

內 return 0;

}

呼叫func5(),會報錯,「a」未宣告

C 基礎知識(二)

01 在c 中,string str null 與 string str 請盡量使用文字或圖 答 前者是將str這塊空間置空 或理解為物件置空 後者給str賦予了空字串,兩者顯然是不一樣的.你可以輸出str和 的比較結果或分別輸出兩種情況下的str的串長就會發現問題,str null根本就無法計算出...

C 基礎知識之二

c 基礎知識之二 1 靜態字段 靜態成員 被類的所有例項共享,對其改變,對所有例項都可見。2 宣告為靜態的有 字段 方法 屬性 建構函式 運算子 事件。3 常量與靜態量不同 常量沒有自己的儲存位置,在編譯時被編譯器替換。4 類屬性與類字段不同 屬性是乙個函式成員,它不為資料儲存分配記憶體並執行 5 ...

基礎知識 二

1,較大陣列應該在main函式外宣告,否則可能因為 他作為臨時變數在堆疊段中佔據的空間過大,棧溢位 2,string.h memcpy b,a,sizeof int k a b 複製k個元素 memcpy b,a,sizeof a a b memset a,0,sizeof a 將陣列全部填充為零 ...