程式段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格式的可執行檔案中是不占用空間的,只會記錄它的大小等一些標記性資料,具體細節不討論。作業系統下的應用...