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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++与C中const的比较以及const和define的比较

發(fā)布時間:2023/12/19 c/c++ 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++与C中const的比较以及const和define的比较 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C++與C中const的比較:

C語言中 const修飾的變量是一個 常變量,本質(zhì)還是變量,有自己的地址空間C++編譯器對const常量的處理 當碰見常量聲明時,在符號表中放入常量 ==> 問題:那又如何解釋取地址編譯過程中若發(fā)現(xiàn)對const使用了extern或者&操作符,則給對應(yīng)的常量分配存儲空間(兼容C) 但是編譯過程中若發(fā)現(xiàn)使用常量則直接以符號表中的值替換,即使給該常量分配了空間,也并不使用里面的值#include <stdio.h>// 建議用 const 常量 代替宏常量 // define 宏 在預編譯的時候進行處理 const 是在編譯的時候進行處理的 // 宏做簡單替換,不會進行類型檢查,作用域的檢查 void func4_1() { // 宏的作用域從定義的那個位置開始,到文件結(jié)束都可見,可以使用 #define A 100// const 常量的作用 在當前的 {}之內(nèi)const int b = 20;printf ("%d\n", A);printf ("b = %d\n", b);// 撤銷宏定義,如果不撤銷,宏可以一直使用 #undef A }int main4_2() {//printf ("b = %d\n", b);// func4_1();// printf ("%d\n", A);return 0; }int main4_1() { // C++中用 const 來定義常量const int a = 10;// a = 20;// C++中常量放在一個常量表中// 當編譯器檢測到要const常量進行取地址操作,它會為 a 分配內(nèi)存// 但是這個內(nèi)存并不會被 a 使用int *p = (int *)&a;*p = 100;printf ("&a = %p, p = %p\n", &a, p);// const 常量 a 并不會使用分配它的空間,使用 a 的時候,用常量表中的值進行替換printf ("a = %d, *p = %d\n", a, *p);return 0; }

總結(jié)

以上是生活随笔為你收集整理的C++与C中const的比较以及const和define的比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。