#define max(a,b) (((a)-(b)) >> 31 ? (b) : (a))
//注意三目運算子的原理。
說明:利用變數為負數時最高位為負數的原理,實現了max巨集。
注意:不支援浮點型。
例如:
unsigned
char a,y;
x =89;
y =56;
(1)printf
("val = %d\n"
,(y-x)
>>31)
;//結果為:-1 : max(y,x)
(2)printf
("val = %d\n",(
(y-x)
>>
31? x : y)
;//結果為:x :(1)值為0,則(2)結果為y; (1)值為-1,則(2)結果為x。
#include
using
namespace std;
//定義空間
intmain
(void
)
首先說說const的作用:
將變數定義成唯讀屬性,修飾函式引數,修飾函式返回值 三個作用。
一:唯讀屬性:被const修飾的變數受到強制保護。
二:修飾函式引數:防止被函式意外的變動。
三:修飾函式引數,修飾函式返回值:提高程式的健壯性
比較:(1)const 變數是由資料型別,而巨集常量是沒有資料型別的;所以編譯器可以對前者進行型別安全檢查,而後者只進行字元替換,沒有型別安全檢查,所以可能會產生意料不到的錯誤。
(2)有些整合化的調式工具可以對const變數進行除錯,但是不能對巨集常量進行除錯。
答:陣列要麼在靜態儲存區被建立(如全域性陣列),要麼在棧上被建立。指標可以隨時指向任意型別的記憶體塊。
(1)修改內容的差異
char a = 「hello」;
a[0] = 『x』;
char *p = 「world」; // 注意p 指向常量字串
p[0] = 『x』; // 編譯器不能發現該錯誤,執行時錯誤
(2)用運算子sizeof 可以計算出陣列的容量(位元組數)。
sizeof(p),p 為指標得到的是乙個 指標變數的位元組數,而不是p 所指的記憶體容量。c++/c 語言沒有辦法知道指標所指的記憶體容量,除非在申請記憶體時記住它。注意當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標
char a = "hello world";
char *p = a;
cout<< sizeof(a) << endl; // 12 位元組
cout<< sizeof(p) << endl; // 4 位元組
計算陣列和指標的記憶體容量
void func(char a[100])
第二階段小結
資料結構基本概念 資料 資料即資訊的載體,是能夠輸入到計算機中並且能被計算機識別,儲存和處理的符號總稱 資料元素 資料元素是資料的基本單位,又稱之為記錄。一般,資料元素由若干基本項 字段,域,屬性 組成。資料結構 資料結構指的是資料元素及資料元素之間的相互關係,或組織資料的形式 資料之間的結構關係 ...
第二階段小結
先是pta上的作業 這題要求我們熟練的掌握類之間的繼承與多型的使用,在類與類之間傳遞資訊時不能弄混,要弄清楚單一職責原則。這一題主要考察繼承與多型,泛型容器的應用。接下來是學習通上的課後作業 第乙個是單向鍊錶 單向鍊錶由乙個個的節點組成,這些節點都帶有下乙個節點的引用,最後乙個節點指向null,這樣...
vivi的第二階段
vivi 的第二階段 vivi 的第二階段是從 main 函式開始,同一般的 c語言程式一樣,該函式在 init main.c 檔案中,總共可以分為 8個步驟。1 函式開始,通過 putstr vivi banner 列印出vivi 的版本。vivi banner 在 init version.c ...