日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

const int、const int *、int *cosnt、const int * const、const int 的区别

發布時間:2024/10/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 const int、const int *、int *cosnt、const int * const、const int 的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2018-01-04 創建人:Ruo_Xiao 2018-10-17 修改人:Ruo_Xiao 郵箱:xclsoftware@163.com 修改內容:增加對 delete 指向常量的指針的可行性的說明。 2019-02-20 修改人:Ruo_Xiao 修改內容:增加對const的附加值的說明。

零、const的今世來生

  • 關鍵字又叫做限定符,因為它限定了聲明的含義
  • 英文全稱:constant,意義就是常數,故被const修飾的變量類型都是常類型,即不可改變。
  • C中的const,在C90(ANSI C 或者 C89)中加入的關鍵字(之前有個K&R C )。
  • C++中的const,暫時在網上沒有找到相關介紹。由于C語言是在1972年至1973間創建的,而1990年在C90中加入了const,所以C++中的const大概是在其之后加入的。
  • 目的:取代#define。
  • 一、const int

    在定義變量的時候必須初始化,否則報錯。

    #include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]) {const int i = 0;//i = 4; //error C3892: “i”: 不能給常量賦值//error C2734: “k”: 如果不是外部的,則必須初始化常量對象//const int k; //k = 3; //error C3892: “k”: 不能給常量賦值return 0; }

    二、const int *

    1、聲明該指針變量指向的是常量,即該指針變量的內容可以改變,但是該內容指向的內容不可改變!

    #include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]) {const char *p = "Hello world!";//p[3] = '3'; //error C3892: “p”: 不能給常量賦值p = "Hi!";return 0; }

    2、雖然指向的內容不可改寫,但是delete則是可以的。栗子:

    const int *p = new int[3];delete []p;p = nullptr;

    因為delete只是告訴系統,現在p所指向的這塊內存已還給自由存儲區,不再被使用,可以被其他程序改寫。而此時p依舊指向這塊不可使用的內存,故需要對p進行清零。

    三、int *const

    聲明該指針變量為常變量,即指針變量里面的內容不可改變,但是該內容指向的內容可以改變!

    #include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]) {char *const p = "Hello world!";p[3] = '3'; //p = "Hi!"; error C3892: “p”: 不能給常量賦值return 0; }

    四、const int * cosnt

    聲明該指針變量里面的內容不可改變,同時該內容指向的內容亦不可改變。

    #include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]) {const char *const p = "Hello world!";//p[3] = '3'; //error C3892: “p”: 不能給常量賦值//p = "Hi!"; //error C3892: “p”: 不能給常量賦值return 0; }

    五、const int &

    在引用前面加上const,代表該引用為常引用,即被引用的對象不可改變。若是在形參中使用,則不可達到在函數里面修改變量值的目的。

    #include "stdafx.h" #include <iostream> using namespace std;int add (const int &a,int &k) {//a += 7; //error C3892: “a”: 不能給常量賦值k += 8;return (a+k); }int _tmain(int argc, _TCHAR* argv[]) {int a = 5;int k = 9;const int &b = a;//b = 7; //error C3892: “b”: 不能給常量賦值int t = add(a,k);cout<<"a = "<<a<<endl;cout<<"b = "<<b<<endl;cout<<"t = "<<t<<endl;cin.get();return 0; }

    結果:

    所以,如果想將形參作為函數的輸出,同時使用了引用的方法,切記不要在引用前面使用const!

    六、總結

    以上總結了const的具體功能,其附加值也是很高的。
    1、增加代碼的可讀性。可以明確向讀你代碼的人傳遞該形參、變量的可操作性。
    2、合理的const可以讓編譯器幫你保護你的變量,即:減少bug的出現。

    (SAW:Game Over!)

    總結

    以上是生活随笔為你收集整理的const int、const int *、int *cosnt、const int * const、const int 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。