引言——
在c語言中,有些函數回返回指針,即為返回指針的函數。通常情況下函數的實現方不希望函數的調用方修改指針指向的內容。
解決方案——
在函數返回的時候返回一個指向 const 變量的指針。示例代碼如下
[cpp]
#include "stdafx.h"
static const int* testPointerToConstVaribles();
int _tmain(int argc, _TCHAR* argv[])
{
const int *TestPointer = NULL;
TestPointer = testPointerToConstVaribles();
return 0;
}
const int* testPointerToConstVaribles()
{
static int ConstVarible = 100;
return &ConstVarible;//返回指向const變量指針
}
如果在編碼中試著改變指針指向的值就會出錯,以下是出錯代碼
[cpp]
#include "stdafx.h"
static const int* testPointerToConstVaribles();
int _tmain(int argc, _TCHAR* argv[])
{
const int *TestPointer = NULL;
TestPointer = testPointerToConstVaribles();
*TestPointer = 34;//修改指針指向的值,引起編譯錯誤
return 0;
}
const int* testPointerToConstVaribles()
{
static int ConstVarible = 100;
return &ConstVarible;//返回指向const變量指針
}
上面代碼在VS 2005 下編譯會出現以下錯誤(錯誤代碼塊為 "*TestPointer = 34;//修改指針指向的值,引起編譯錯誤")
" error C3892: 'TestPointer' : you cannot assign to a variable that is const"
總結
通過以上方案可以防止非法修改指針指向的值。
摘自 DriverMonkey的專欄