一些程式段分析 2

2021-07-14 07:38:33 字數 899 閱讀 3632

程式段3:以下**編譯時會產生錯誤的是哪條語句?

#include using namespace std;

struct foo

foo(int) {}

void fun() {}

};int main(void)

分析:呼叫無參建構函式即編譯器預設生成的建構函式時,直接定義乙個物件,不能在後面加乙個括號,否則就為函式的定義,會產生錯誤。語句四出錯**於語句三。編譯器認為語句三宣告了乙個返回foo無引數的函式b,然後編譯語句四時發現語法錯誤。

程式段4:以下不能正確定義二維陣列的選項是哪個?

(1)int a[2][2]=,};

(2)int a[2]=;

(3)int a[2][2]=,2,3};

(4)int a[2]=,};

分析:對於二維陣列,行數可以省略,但列數一定要指定,因為編譯器根據列數來進行定址。宣告多維陣列只有最靠近陣列名的那一維的大小可以省略。

程式段5:**執行結果是?

#include#includeusing namespace std;

class a

return s.x+fun(a(s.x - 1));

}public:

a(long a)

private:

long x;

};int main()

cout0 1 2 3 4

a(i)

0 1 2 3 4

f(a(i))

1 1 1 4 8

sum1 2 3 7 15

一些程式段分析 1

最近刷了不少牛客上的題目,感覺無論對於基礎知識還是程式設計能力都有一點點地提公升。對其中出現頻率比較高的程式段分析題作乙個簡要的總結,以方便以後檢視。程式段1 char a xyz b if strlen a strlen b printf a b n else printf a b n 分析 st...

一些面試2

1.最短路徑演算法 迪傑斯特拉演算法 不能處理負權的邊,因為它的過程就是尋找到源點最短的邊,可能會找不到最短的邊。如 存在三個點,1和2之間權值為3,1和3之間權值為4,2和3之間權值為 2.這樣的話d 1,2 就會被錯求為3.而正確答案是2.也就是說乙個已經被標記為訪問過的點 已經找到到源點的最短...

關於bss段的一些思考

bss段是用來存放 未初始化的全域性變數 未初始化的靜態區域性變數 初始化為0的全域性變數 部分編譯器會將它放到data段 初始化為0的靜態區域性變數 部分編譯器會將它放到data段 bss段在elf格式的可執行檔案中是不占用空間的,只會記錄它的大小等一些標記性資料,具體細節不討論。作業系統下的應用...