【面試題】
下列c++程式會在哪一行崩潰?
struct s
;main()
【分析】int *p=&s.i時,一直到p[0]=4,p[1]=3的時候,p始終等於&s.i。
s.p=p 建立了如下的關係:
s.p存了p的值,也即&s.i,s.p[1]相當於*(&s.i+1),即s.i的位址加1.也就是s.p. s.p[1]和s.p其實是同乙個地方,所以到s.p[1]=1的時候,就是在為s.p指標變數賦值,
即改變s.p指標的指向,s.p[0]會指向記憶體位址為1的地方,這顯然是乙個非法位址,不能寫入,
而最後的s.p[0]=2(相當於*s.p=2)是在向s.p指標指向的位址賦值,也就是試圖向位址1寫入數值,當然就出錯了。
面試題 指標
一 指標 1 利用指標實現兩數交換 include using namespace std void swap1 int p,int q void swap2 int p,int q void swap3 int p,int q void swap4 int p,int q void swap5 i...
面試題 指標 引用
返回目錄 問題 問 引用與指標有什麼區別?答 1.引用必須初始化,指標可以不用。2.引用初始化以後就不能被改變 即只能初始化一次,始終只指向指定的物件 而指標可以改變所指向的物件。3.不存在指向空值的引用,而指標可以指向乙個空值,即空指標。4.因為引用不能指向空值,這意味著使用引用之前不需要測試其合...
面試題 指標 void 通用指標
返回目錄 問題 問 函式中的void和指標中的void 有什麼區別?答 在函式中的void是表示無型別或無返回型別。void指標是通用指標,用來存放任何資料型別的引用。分析 void真正發揮的作用在於 1.對函式返回的限定。2.對函式引數的限定。函式返回值 函式名 引數1,引數2,引數3,int s...