關於C/C++的一些知識點整理 (5)

1. 

解析:==的優先級小於<=。

2.

解析:如果是小寫的u則輸出32769,大寫的字母不能當作格式控制符。

3.

!!!!!沒懂!!!!!!

4.

函數模板和類模板都是由編譯器實例化。

類模板的成員函數都是函數模板,類模板實例化後,成員函數也隨之實例化。

一個類定義中,只要有一個函數模板,這個類就是類模板。

5.

解析:最後一個選項#define N 2008 後面不加分號就是對的。

6.

純虛函數的格式:virtual <類型> <函數名> (<參數表>) = 0;

例:virtual void print()=0;

聲明純虛函數的類是抽象類,不能實例化!基類被虛繼承纔是虛基類。

7.

首先對0長數組做一個解釋:

用途 :長度爲0的數組的主要用途是爲了滿足需要變長度的結構體。

用法 :在一個結構體的最後 ,申明一個長度爲0的數組,就可以使得這個結構體是可變長的。對於編譯器來說,此時長度爲0的數組並不佔用空間,因爲數組名本身不佔空間,它只是一個偏移量, 數組名這個符號本身代 表了一個不可修改的地址常量 (注意:數組名永遠都不會是指針! ),但對於這個數組的大小,我們可以進行動態分配.

8.

        數組名是數組這種類型的變量名,所以對數組名取地址是取的整個數組的地址,所以&a+1自然要跨過整個數組的長度,本題即跨過2*5 = 10個int的長度。

       有了上述概念,再來分析這道題,int *ptr = (int *)(&a+1),p此時指向的地址應該是a[1][4]後面的地址,由於ptr是int型指針,ptr-3應該是ptr向前移動3個元素,即ptr-3指向a[1][2],所以*(ptr -3) = 9。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章