8-13 刷题 复习 知识点集合
?
1.
//把數據類型去掉了看 簡單很多的
指針常量
指針常量:顧名思義它就是一個常量,但是是指針修飾的。?
格式為:
?
在這個例子下定義以下代碼:
int a,b; int * const p=&a //指針常量 //那么分為一下兩種操作 *p=9;//操作成功 p=&b;//操作錯誤因為聲明了指針常量,說明指針變量不允許修改。如同次指針指向一個地址該地址不能被修改,但是該地址里的內容可以被修改
常量指針
常量指針:如果在定義指針變量的時候,數據類型前用const修飾,被定義的指針變量就是指向常量的指針變量,指向常量的指針變量稱為常量指針,格式如下
const int *p = &a; //常量指針在這個例子下定義以下代碼:
int a,b;const int *p=&a //常量指針 //那么分為一下兩種操作 *p=9;//操作錯誤 p=&b;//操作成功因為常量指針本質是指針,并且這個指針是一個指向常量的指針,指針指向的變量的值不可通過該指針修改,但是指針指向的值可以改變。
附加題
指向常量的指針常量該怎么寫??
答案:
?
2.下面代碼的輸出結果是()
int main(){
???int pid;
???int num=1;
???pid=fork();
???if(pid>0){
???num++;
???printf("in parent:num:%d addr:%x\n",num,&num);
???}
???else if(pid==0){
???printf("in child:num:%d addr:%x\n",num,&num);
???}
}
?
1.父子進程中輸出的num相同,num地址不相同 2.父子進程中輸出的num不同,num地址相同 3.父子進程中輸出的num相同,num地址也相同 4.父子進程中輸出的num不同,num地址不相同解析:2
剛剛fork出來不止虛擬地址一樣,物理地址也一樣。當進程發生分歧時,即修改此變量時,才會分配不同的物理地址,也就是copy-on-write,寫時復制。
?
3.
#include <iostream>using namespace std;class B0//基類BO聲明 { public://外部接口virtual void display()//虛成員函數{cout << "B0::display0" << endl;} };class B1 :public B0//公有派生 { public:void display() { cout << "B1::display0" << endl; } };class D1 : public B1//公有派生 { public:void display(){ cout << "D1::display0" << endl; } };void fun(B0 ptr)//普通函數 {ptr.display(); }int main() {B0 b0;//聲明基類對象和指針B1 b1;//聲明派生類對象D1 d1;//聲明派生類對象fun(b0);//調用基類B0函數成員fun(b1);//調用派生類B1函數成員fun(d1);//調用派生類D1函數成員system("pause");return 0; } 輸出結果:B0::display0 B0::display0 B0::display0解析:fun函數,傳入的參數是一個類的對象,這樣,派生類作為參數傳入的時候,會自動的類型轉換為基類對象,這樣,display就只是執行基類的函數了。選B0::display() B0::display() B0::display()
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的8-13 刷题 复习 知识点集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 方案二、三SELECT、UDP完成聊天室
- 下一篇: mysql常用命令集合 及附图操作