每日一練(三十)

2021-10-25 15:30:46 字數 1608 閱讀 2423

分析下列輸出:

char a=

;cout <<

strlen

(a)<< endl;

返回的結果不可預料,因為a初始化的時候,結尾沒有主動加上『\0』結束符。而標準庫字串處理函式的時候是以結束符\0為結束的。

同理,如下的程式輸出:

char a=

;printf

("%s"

, a)

;

輸出的就是:ab了,因為字串處理以『\0』為終止。

本質上講,所有陣列在記憶體中都是一維線性的,只不過不同的語言可能儲存方式不同,有行優先儲存和列儲存。

以下宣告是否正確:

int

fun(

int a);

看起來沒什麼問題,問題就出在二維陣列的宣告上,二維陣列的宣告初始化不能省略列數!!!還有一些細節!!!!

int a[3]

[2]=

;int

*p = a[0]

;cout << p[0]

<< endl;

答案輸出:1

猛的一看,認為p[0]=0。

實際上,這裡的(0, 1)是逗號運算子,所以int a[3][2] =,p指標指向二維陣列的首位址,p[0]

相當於*(p+0),即a陣列的第乙個元素。

還有要注意二維陣列的某一元素的隨機讀取:

注意,當動態宣告陣列的時候,陣列相當於乙個鍊錶,因為陣列的a[k]都是乙個int*,所以動態申請的二維陣列的元素不是連續的,所以我才說相當於乙個鍊錶。

在巨集定義中,經常會看到do while (0)定義的形式,比如:

#define __set_task_state(tsk, state_value)      \

do while (0)

看起來多此一舉,可實際上採用do{}while(0)的形式保證了巨集定義不會受到大括號、分號的影響,使巨集定義總是按照你期望的方式執行

其中,do{}保證了裸機能夠被看作乙個整體執行,while(0)保證了只執行一次。

參考:詳解:

find用來搜尋檔案,可以按照:許可權、檔名、檔案大小、檔案時間、inode號、所有者等來搜尋檔案。

但是find是直接在硬碟中進行搜尋的,如果指定範圍過大,就會消耗較大的系統資源可能導致伺服器壓力過大。

命令格式:

[root@localhost ~]

# find 搜尋路徑 [選項] 搜尋內容

find有兩個引數:

選項如下:

每日一練4

員工表emp 員工編號eid,姓名ename,工作職位title,僱傭日期hiretime,工資salary,獎金bonus,部門depart 部門表dept 部門編號did,名稱dname,部門領導leader 員工資料 1001,張三 銷售 1999 12 1 3000.0,1100.0,102...

每日一練25

請描述 mysql 從安裝到配置的全部詳細過程 確保一台新電腦可以順利使用 mysql mysql安裝嚮導啟動,按 next 繼續 選擇安裝型別,有 typical 預設 complete 完全 custom 使用者自定義 三個選項,我們選擇 custom 有更多的選項,也方便熟悉安裝過程 選擇配置...

每日一練 13

談談你對ajax 的理解?概念 特點 作用 select 教師號,sum case when 星期號 1 and 是否有課 有 then 1 else 0 end as 星期一,sum case when 星期號 2 and 是否有課 有 then 1 else 0 end as 星期二,sum c...