一.指針和引用的區別: 1.指針可以指向空而引用不可以 2.使用引用不需要檢測合法性而使用指針需要 3.指針可以更改指向目標而引用不可以 4.僅當指向一個對象并且一旦指向一個對象就不會改變指向那么應該使用引用
二.const常量賦值時,必須同時初始化
三. char c[] = “helloworld”;//局部變量對應的是內存中的棧 char* c = “helloworld”;//全局變量對應的是內存中的全局區域,且保存在字符串常量區,屬于只讀數據段,不像全局變量保存在靜態存儲區
四.
int* ptr;ptr = (int*)0x8000;*ptr = 0xaabb;因為指向的是未知是否被使用的內存,所以第三句的時候會崩潰
五.
#include <iostream>using namespace std;class A{public: int a; A() { a = 1; } void PRint() { cout << a << endl; }};class B:public A{public: int a; B() { a = 2; }};int main(){ B b; b.print(); cout << b.a << endl; return 0;}答案 1 2
六. 1.函數的形參只有在調用到實參的時候才會分配空間 2.函數必須在它被調用之前聲明,哪怕函數的定義出現在主函數之前但是也要在調用前聲明且實際上這個跟main()函數無關 3.若一個函數沒有return語句,則什么值都不返還這句話是錯誤的,因為主函數main中可以不寫return語句,因為編譯器會自動返回0,但是一般函數沒有return 語句是不行的
七. (1)float(**def)[10]; def是一個二級指針,指向一個一維數組的指針,數組元素都是float (2)double* (*gh)[10]; gh是一個指針,它指向一個一維數組,數組元素都是double* (3)int*((*b)[10]); 就跟”int*(b)[10]”是一樣的,是一維數組的指針,數組元素都是int (4)int (*(*F)(int,int))(int) F是一個函數的指針,指向的函數的類型是有兩個int參數并且返回一個函數指針的函數,返回的函數指針指向有一個int參數且返回int的函數
八.malloc/free和new/delete的區別 malloc和free是C++/C語言的標準庫函數,new/delete是C++的運算符。它們都可用于申請動態內存和釋放內存。 因為對象在創建的同時要自動執行構造函數,對象在消亡之前要自動執行析構函數,由于malloc/free是庫函數而不是運算符,不在編輯器的控制權限之內,不能夠歐巴執行構造函數和析構函數的任務強加于malloc/free 因此C++語言需要一個能完成動態內存分配和初始化工作的運算符new,以及一個能完成清理與釋放內存工作的運算符delete。new/delete不是庫函數,而是運算符。
九. 智能指針的用法 auto_ptr pt(new T);
新聞熱點
疑難解答