一. 函式引數(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 將陣列全部填充為零 ...