C 設計語言三大難點

2021-07-15 07:01:58 字數 1662 閱讀 5655

預處理問題、const問題、sizeof問題

1、巨集定義 #define

(1) 簡單的巨集定義:

define 《巨集名》 《字串》

例: #define pi 3.1415926

(2) 帶引數的巨集定義

define 《巨集名》 ( 《參數列》) 《巨集體》

在使用簡單巨集定義時,當字串中不只乙個符號時,加上括號表現出優先順序;如果是 帶引數的巨集定義,則要給巨集體中的每個引數加上括號,並在整個巨集體上再加乙個括號。

巨集是替換,在編譯開始之前。先替換再計算。

表明一年有多少秒 #define seconds_per_years (60*60*24*365)ul

求兩個引數並返回比較小的值#define min(x,y) ((x)<=(y)?(x):(y))

把引數用括號括起來,並且在最終的巨集體上再加一層括號。

2、const

a、關於const修飾指標的情況,一般分為如下4種情況:

int b = 500;

const

int* a = &b; //情況1

intconst *a = &b; //情況2

int* const a = &b; //情況3

const

int* const a = &b;//情況4

情況1

const位於星號的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量;

const位於星號的右側,則const就是修飾指標本身,即指標本身是常量

因此情況1和情況2相同,都是指標指向的內容為常量,這種情況下不允許通過指針對內容進行更改操作,但是可以對指標本身進行更改操作。

情況1和2:*a = 600是非法的,a = &c是合法的。

情況3指標本身是常量,不能對指標本身進行更改操作,而指標指向的內容不是常量,可以通過指針對內容進行更改操作。這種情況下指標必須被初始化。

情況3:*a = 600是合法的,a=&c是非法的

對於情況4:指標本身和指向的內容均為常量,那麼指標本身不能改變,指標指向的內容也不能改變。

b、const成員函式

我們定義的類成員函式中,常常有些成員函式不改變類的資料成員,也就是說這些函式是唯讀函式。使用const可以提高程式可讀性和健壯性。

int gety() const;//const放在函式宣告後。放在函式宣告前意思是返回值是const,意義不同
如果想通過const成員函式修改類成員變數資料,可以使用mutable修飾變數mutable int m_count;

3、sizeof運算子

指標:指標大小是定值,4位元組

字元:1位元組

int:4位元組

float:4

double:8

結構體:當長度小於處理器位數的時候(64位,8位元組)一定是最長資料元素的整數倍;當長度大於處理器位數的時候,是位數的整數倍。

陣列做sizeof的引數不退化成指標,仍然計算的是陣列內容、不支援動態分配的陣列

乙個空類所佔空間是1,多重繼承的空類所佔空間也是1.

SEO三大難點及解決辦法

上次在在航空航天大學聽了zac的剖析seo核心技術講座 由於對seo方面的內容一筆帶過,這次詳細寫一下。在這次講座有一頁ppt資訊量非常大,其本頁ppt幾乎囊括了seo技術的方方面面,其中在seo方面有三大難點,一直困擾著站長,下面就著重講解一下。提示 本文內容是按照我本人的理解來寫的,並不全包含z...

企業核心系統儲存雙活必會遭遇哪三大難點?

核心系統是企業最為重要的系統,尤其是金融行業,它是金融企業的生命線,一旦資訊科技風險越過了這條底線,企業的整個金融資訊系統將全面癱瘓,後果不堪設想。所以為了牢牢守護住這條命脈,企業一直在不斷的尋求更好的技術和更優的解決方案,來對核心系統的優化之路進行探索,這其中之一便是核心系統儲存雙活優化。傳統的核...

c WebService呼叫的三大難題

c webservice呼叫的三大難題 用c 編寫客戶端時,只需要將webservice新增到引用,就能像呼叫本地方法一樣去c webservice呼叫。像這樣的例子也比比皆是,在這就不多講。二 用c 實現webservice,一般會用到gsoap,具體方法見 http www.cppblog.co...