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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++引用说明

發布時間:2025/3/15 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++引用说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

三目運算符在C++中返回的是變量而不是值,在C語言中返回的是值不是變量,在C++中是通過返回地址再取值達到的返回變量本身

#include <iostream>using namespace std;int main() {int a = 20;int b = 30;(a < b ? a : b) = 10; //C++中三目運算符返回的是變量本身//讓表達式返回一個內存空間,,,,也就是內存的首地址 指針//其實在C++中相當于做了一下的處理* (a < b ? &a : &b) = 50;//其實就是相當于讓表達式返回變量的地址,而不是變量的本身這樣就能夠使用變量的地址改變變量的值 這一部分相當于C++編譯器幫助程序員完成的第一部分 因為當左值必須有內存空間printf("The result of b :%d\n",b);printf("The result of a is %d\n",a);printf("hello world!\n");system("pause"); return 0; } #include <iostream>using namespace std;int main() {const int *c; //const修飾的是指針指向的內存空間不能被修改int * const d; //const修飾的指針不能夠被更改,指針是確定的不能夠更改,但是指針指向的數值是可以被更改的const int * const c;printf("hello world!\n");system("pause"); return 0; }

C語言中的const 是一個冒牌貨,因為同樣的代碼在C語言中能夠通過指針修改cosnt的值但是在C++中卻不可以

//在C語言中能夠通過指著修改a的值,運行結果A的值是20 int main() {//好像a是一個常量const int a = 330;int *p = NULL;p = (int *) &a;*p = 20;printf("a = %d\n",a);printf("*p = %d\n",*p);printf("hello world!\n"); return 0; }

同樣的代碼在C++中運行的結果A的值依然是330

#include <iostream>using namespace std;int main() {//好像a是一個常量const int a = 330;int *p = NULL;p = (int *) &a; //會從新開辟一段內存,并且這段內存由p指向,但是a還是a,只是按照a的大小和形式開辟內存*p = 20;printf("a = %d\n",a);printf("*p = %d\n",*p); //輸出的是20 *p和a不是一個內存printf("hello world!\n");system("pause"); return 0; }

C++語言中的const才是真正的const常量
C++中將const聲明的變量回放在一個符號表中,符號表中是使用鍵值對的即(keey : value)的形式,并且鍵值一旦確定個就不能更改。
const內存的分配時機是在編譯器編譯的時候進行內存的分配的
并且在C++中聲明為const的變量必須在聲明的時候進行初始化
下面寫一段例子進行證明:

所使用的C++工程如下所示:

#include <iostream>using namespace std;int main() {//證明const變量是在編譯的時候進行的內存的分配int a;const int b = 10;int c;printf("&a = %x,&b = %x,&c = %x\n",&a,&b,&c);system("pause"); return 0; }

輸出的結果證明b的地址在a和c的之間,這就證明了const聲明的變量的內存是在編譯的時候進行內存的分配的;

在C++中const的用途,其實const常用來在C++中替換#define
在C++中能夠使用const聲明的變量作為數組得到下標,這是因為const聲明的變量也是在編譯階段進行的處理
const由編譯器處理提供類型檢查和作用域檢查

使用#define的時候就算是在局部函數中進行的宏定義作用域也是整個源文件下面的例子編譯是通過的

#include <iostream>using namespace std;int main02() {//證明const變量是在編譯的時候進行的內存的分配int a;const int b = 10;int c;printf("&a = %x,&b = %x,&c = %x\n",&a,&b,&c);system("pause"); return 0; }void func1() { #define a 10const int b = 20; //#undef a }void func2() {printf("a = %d\n",a); } int main() {func1() ;func2();system("pause"); return 0; }

當打開#undef a 的時候編譯就不能夠通過,#undef就是取消對#define的宏定義可以指出定義得到內容也可以不指出 不指出的時候就是取消前面定義的任何的東西

#include <iostream>using namespace std;int main02() {//證明const變量是在編譯的時候進行的內存的分配int a;const int b = 10;int c;printf("&a = %x,&b = %x,&c = %x\n",&a,&b,&c);system("pause"); return 0; }void func1() { #define a 10const int b = 20; #undef a //這樣能保證只有在該函數中才能夠使用宏定義的a }void func2() {printf("a = %d\n",a); } int main() {func1() ;func2();system("pause"); return 0; }

但是使用const在局部函數中聲明的變量 就不能夠在其他函數中進行調用

#include <iostream>using namespace std;int main02() {//證明const變量是在編譯的時候進行的內存的分配int a;const int b = 10;int c;printf("&a = %x,&b = %x,&c = %x\n",&a,&b,&c);system("pause"); return 0; }void func1() { #define a 10const int b = 20; //#undef a }void func2() {printf("a = %d\n",a);printf("b = %d",b); } int main() {func1() ;func2();system("pause"); return 0; } 1>------ 已啟動生成: 項目: 項目練習, 配置: Debug Win32 ------ 1>正在編譯... 1>demo8_const.cpp 1>e:\vs2008\項目練習\項目練習\demo8_const.cpp(28) : error C2065: “b”: 未聲明的標識符 1>生成日志保存在“file://e:\VS2008\項目練習\項目練習\Debug\BuildLog.htm” 1>項目練習 - 1 個錯誤,0 個警告 ========== 生成: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 ==========

在C++中引用就相當于變量的別名,直接可以用來更改原始數據

#include <iostream>using namespace std; //復雜數據類型的引用struct Teacher {char name[64];int age; }; void printfT(Teacher &pT) {cout << pT.age << endl; } void printfT2(Teacher &pT) //引用相當于別名直接可惡意更改變量原來的數值 {pT.age = 26;cout << pT.age << endl; } int main() { Teacher t1;t1.age = 35;printfT(t1);printfT2(t1);system("pause"); return 0; } #include <iostream>//C語言中的宏定義 //使用宏定義對字符串進行處理using namespace std;int main() {int x = 20;const int &y = x; // 常引用 讓變量引用擁有只讀屬性 不能通過y修改x了{int &m = 20; //編譯不通過,因為 字面量沒有內存 // 引用就是給變量起一個別名,但是字面量沒有別名//const 變量的類型 C++編譯器會將const 類型數據分配內存const int &m = 10; //可以使用 因為C++會給m分配一個內存空間 讓 m 指向這個內存空間}system("pause"); return 0; }

總結

以上是生活随笔為你收集整理的C++引用说明的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 快色在线| 青青草自拍视频 | 亚洲精品成人在线 | 黄视频免费观看 | www.99爱| 看毛片网 | 最近日本中文字幕 | 亚洲激情av| 国内精品卡一卡二卡三 | 美国黄色a级片 | 韩国av在线免费观看 | 黄色一级片免费看 | 激情五月激情综合网 | mm1313亚洲国产精品无码试看 | 久久四色 | 国产精品免费一区 | 国产人成免费视频 | 午夜免费小视频 | 精品中文字幕一区二区三区 | 亚洲第一视频区 | 大肉大捧一进一出好爽动态图 | 999久久 | 欧美三级欧美一级 | 丰满少妇毛片 | 国产一区二区三区免费在线观看 | 欧美三级免费 | 国产成人tv| 久久精品欧美日韩 | 亚洲理论电影在线观看 | 一区免费观看 | 亚洲国产一区在线观看 | 在线观看欧美成人 | asian性开放少妇pics | 亚洲美女性生活视频 | 夜夜操天天操 | 欧美色图12p | 人操人| 亚洲美女视频 | 国产成人无遮挡在线视频 | 一区二区三区亚洲精品 | 国产日韩欧美在线 | 国产精品视频网站 | 欧美色999 | 国产综合精品一区二区三区 | 午夜影院一区二区三区 | 91精品国产综合久久久密臀九色 | 东方成人av在线 | 亚洲高潮| 日韩精品一区二区三区电影 | 免费毛片视频 | 美女免费福利视频 | 国产视频高清 | 五月婷婷在线播放 | 人人澡超碰碰 | 精品一区二区久久久久久久网站 | 91丨九色丨丰满 | 国产成人久久精品 | 久久五月婷 | 波多野结衣亚洲 | 久热精品视频在线观看 | 国产精品 日韩 | 大尺度摸揉捏胸床戏视频 | bbbbbxxxxx性欧美 | 国产又爽又猛又粗的视频a片 | 91精品视频一区二区三区 | 亚洲美女综合网 | 成人av入口 | 国产日韩视频一区 | 美国黄色网址 | 偷拍视频一区二区 | 午夜影片| 日本午夜电影网站 | 免费播放毛片精品视频 | 免费麻豆 | 成年丰满熟妇午夜免费视频 | 久久第一页 | 先锋资源一区二区 | 97人人爽| 国产免费一级片 | 日韩国产欧美一区二区三区 | 国产91av在线播放 | 日产精品一区二区 | 午夜在线观看视频 | 欧美xxxx在线| 97影院| 久久久久久久久免费看无码 | 成品人视频ww入口 | 欧美男人的天堂 | 成人毛片观看 | 亚洲天堂福利 | 欧美黄色片 | 天堂久久久久久 | 欧美一区二区三区四区视频 | 超碰这里只有精品 | 五月天色综合 | 国产视频久久 | 手机看片一区二区 | 日韩有码电影 | 亚洲精品污一区二区三区 |