程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言:const指針使用技巧之——返回指針的函數

C語言:const指針使用技巧之——返回指針的函數

編輯:關於C

引言——
     在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的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved