1.有關const指標和指向const物件指標的一道題:
首先要說明的是怎麼來判斷const指標還是指向const的指標:
如果const後面跟的是型別,那麼const是用來修飾物件的,所以它是指向const物件的指標
但是如果const後面跟的是指標本身,那麼const是用來修飾指標的,所以它是const指標
可以這麼理解,const在*號左邊,那麼它修飾指向const物件的指標,但是const出現在*號右邊,那麼是const指標。
typedef string *pstring;
const pstring cstr;
請問cstr是什麼型別的?
按我之前的理解是將string *代替原先的pstring,最終得到的是const string *cstr;
那這樣來看的話,cstr是乙個指向const物件的指標。
但正確答案是:const是用來形容pstring的,而pstring是乙個指標型別,所以它應該是乙個const指標,等價於:string * const cstr
const指標是不能修改它的指向,而指向const物件的指標是不能修改指標所指向的內容
2.最近觀察到一種求解陣列大小的方法int a=(....); sizeof(a)/sizeof(*a)就是這個陣列的元素個數
這樣我們在使用陣列作為函式引數的時候,使用兩個引數,第乙個引數傳遞陣列的首個元素的位址,第二個引數傳遞陣列的大小。
3.靜態區域性變數只被初始化一次,從第一次被初始化到程式執行結束都是存在的,對定義它的函式體始終是可見的。靜態區域性變數可以用來在某個函式的多次呼叫之間傳遞引數。見如下的例子:
#includeusing namespace std;
int count()
int main()
{ for(int i=0;i<10;i++)
cout<4.類內定義的成員函式是內斂函式,所以我們不要將比較複雜的函式定義放在類內。
5.若沒有給內建型別(比如int)的全域性變數和靜態變數初始化,那麼系統預設的值是0...,但如果是區域性變數系統是不會對它進行初始化的。
6.看unp裡面的一句:typedef void sigfunc(int);我就再納悶這句話到底是什麼意思。後來翻看c++ primer 的指向函式的指標那一節才明白,sigfunc代表了一種返回值為void,形參為乙個int的函式型別。另外在typedef bool (*funcptr) (int,int);表示的是將funcptr定義為指向返回值為bool,有兩個int型的形參函式型別的指標。返回指向函式指標的函式:int(*ff(int))(int*,int);用上typedef才使得這個表示式容易理解:typedef int(*pf)(int*,int); pf ff(int);ff這個函式返回了乙個指向函式的指標。 到現在才對c++中的typedef有比較深入的了解,慚愧慚愧!!
7.指向const物件的指標是一種「自以為指向const物件的指標」:其實它可以指向const物件,也可以指向非const物件:
int deval=5;
const int * pdeval;
pdeval =&deval;
這是允許的。
所以這句論斷是錯誤的:指向const物件的指標所指的一定是const物件。(x)
指向const的指標和const指標
指向const的指標 int gorp 16 int chips 12 const int p snack gorp 其中p snack指向乙個const int。p snack 20 不被允許,p snack的值為const,禁止修改p snack指向的值,p snack chips 可以執行,p...
指向const物件指標 const指標
指向const物件指標 const指標 2010 07 22 16 40 1.指向const物件的指標 指向const物件的指標是乙個指標,但是不能通過它修改它指向的物件的值.宣告方法 const int p 指向const物件的指標在初始化後不允許對它指向的物件的值進行修改.const int i...
指向const物件指標 const指標
參見 110頁 陣列和指標 一節 指向const物件指標關鍵理解 const double cptr 指向const物件指標關鍵理解 可以指向非const物件,但不能通過該指標修改所指向物件的值,const指標關鍵理解 int const curerr errnumb const指標關鍵理解 cur...