C到C++的升級(jí)關(guān)系及區(qū)別實(shí)例探究
一、C與C++的關(guān)系
- C++繼承了所有的C特性
- C++在C的基礎(chǔ)上提供了更多的語(yǔ)法和特性
- C++的設(shè)計(jì)目標(biāo)是運(yùn)行效率與開發(fā)效率的統(tǒng)一
- c++更強(qiáng)調(diào)語(yǔ)言的實(shí)用性
所有的變量都可以在需要使用時(shí)在定義
int c =0; for(int i=1;i<=3;i++) { for(int j=1;j<=3;j++) { c +=i*j } }
對(duì)比:C語(yǔ)言中的變量都必須在作用域開始的位置定義!
二、C到C++的升級(jí)
register關(guān)鍵字請(qǐng)求編譯器將局部變量存儲(chǔ)于寄存器中
在C++中依然支持register關(guān)鍵字
C++編譯器有自己的優(yōu)化方式
C語(yǔ)言中無(wú)法獲取register變量的地址,C++中可以取得register變量的地址
C++編譯器發(fā)現(xiàn)程序中需要取register變量的地址時(shí),register對(duì)變量的聲明無(wú)效
在C語(yǔ)言中,重復(fù)定義多個(gè)同名全局變量是合法的
在C++中,不允許定于多個(gè)同名的全局變量
C語(yǔ)言中多個(gè)同名的變量最終會(huì)被鏈接到全局?jǐn)?shù)據(jù)區(qū)的同一個(gè)地址上
實(shí)例分析
#inlude <stdio.h> int g_v; //int g_v int main(int argc,char*argv[]) { printf("Begin...\n"); int c = 0; for (int i=1;i<=3; i++) { for (int j=1;j<=3; j++) { c +=i*j; } } printf("c = %d\n",c) register int a = 0; printf("&a=%p\n",&a); printf("End...\n"); return 0; }
struct關(guān)鍵字的加強(qiáng)
C語(yǔ)言中struct定義了一組變量的集合
C語(yǔ)言中struct定義的標(biāo)識(shí)符并不是一種新的類型
C++中的struct用于定于一個(gè)全新的類型
typedef struct _tag_student student; struct _tag_student { const char *name; int age; }
struct student { const char* name; int age; }
C和C++中結(jié)構(gòu)體的等價(jià)定義;
C++中所有的標(biāo)識(shí)符都必須顯示的聲明類型
C語(yǔ)言中的默認(rèn)類型在C++中是不合法的
在C語(yǔ)言中
int f()表示返回值為int,接受任意參數(shù)的函數(shù)
f(void)表示返回值為int的無(wú)參函數(shù)
在C++中
int f()和intf(void)具有相同的意義
表示返回值為int的無(wú)參函數(shù)
#include <stdio.h> struct Student { const char* name; int age; }; f(i) { printf("i = %d\n", i); } g() { return 5; } int main(int argc, char *argv[]) { Student s1 = {"Delphi", 30}; Student s2 = {"Tang", 30}; f(10); printf("g() = %d\n", g(1,2,3,4,5)); return 0; }
int f()與intf(void)有什么區(qū)別
在C語(yǔ)言中:
int f() :int類型的返回值,形參可接收無(wú)數(shù)個(gè);
int f(void):int類型的返回值,形參不接收任何形參;
C++語(yǔ)言中:
int f()與int f(void)沒有區(qū)別;
小結(jié)
- C++更強(qiáng)調(diào)實(shí)用性,可以在任意地方聲明變量
- C++編譯器能夠更好的優(yōu)化
- C++ register只是一個(gè)兼容的作用
- C++ 中的任意標(biāo)識(shí)符都必須顯示的指明類型
以上就是C到C++的升級(jí)關(guān)系及區(qū)別實(shí)例探究的詳細(xì)內(nèi)容,更多關(guān)于C到C++升級(jí)關(guān)系區(qū)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語(yǔ)言中的strncpy()函數(shù)的用法及應(yīng)用場(chǎng)景詳解
在C語(yǔ)言編程中,strncpy函數(shù)用于安全地復(fù)制字符串,它可以指定復(fù)制的字符數(shù)以防止緩沖區(qū)溢出,這篇文章主要介紹了C語(yǔ)言中的strncpy()函數(shù)的用法及應(yīng)用場(chǎng)景的相關(guān)資料,并提供了示例代碼,需要的朋友可以參考下2024-10-10C語(yǔ)言實(shí)現(xiàn)opencv提取直線、輪廓及ROI實(shí)例詳解
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)opencv提取直線、輪廓及ROI實(shí)例詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01C++多態(tài)的實(shí)現(xiàn)機(jī)制深入理解
這篇文章主要介紹了C++多態(tài)的實(shí)現(xiàn)機(jī)制理解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07C/C++中一次性執(zhí)行多個(gè)DOS命令的實(shí)現(xiàn)思路
在C語(yǔ)言中執(zhí)行DOS命令的方法很多,在這就不一給大家一一介紹了,本文重點(diǎn)給大家介紹C/C++中一次性執(zhí)行多個(gè)DOS命令的實(shí)現(xiàn)思路,需要的朋友參考下2017-12-12緩存處理函數(shù)storageKeySuffix操作示例解析
這篇文章主要介紹了淺析緩存處理函數(shù)storageKeySuffix操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08c++中虛函數(shù)和純虛函數(shù)的作用與區(qū)別
這篇文章主要介紹了c++中虛函數(shù)和純虛函數(shù)的作用與區(qū)別,需要的朋友可以參考下2014-07-07C語(yǔ)言中的強(qiáng)符號(hào)和弱符號(hào)介紹
這篇文章主要介紹了C語(yǔ)言中的強(qiáng)符號(hào)和弱符號(hào)介紹,本文用多個(gè)實(shí)例來(lái)講解強(qiáng)符號(hào)和弱符號(hào),需要的朋友可以參考下2015-03-03Qt MQTT開發(fā)環(huán)境搭建的實(shí)現(xiàn)示例
本文主要介紹了Qt MQTT開發(fā)環(huán)境搭建的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06WM_CLOSE、WM_DESTROY、WM_QUIT及各種消息投遞函數(shù)詳解
這篇文章主要介紹了WM_CLOSE、WM_DESTROY、WM_QUIT及各種消息投遞函數(shù),有助于讀者更好的理解windows程序的消息機(jī)制,需要的朋友可以參考下2014-07-07C++類中隱藏的幾個(gè)默認(rèn)函數(shù)你知道嗎
這篇文章主要為大家詳細(xì)介紹了C++類中隱藏的幾個(gè)默認(rèn)函數(shù),使用數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03