欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C到C++的升級(jí)關(guān)系及區(qū)別實(shí)例探究

 更新時(shí)間:2024年01月04日 10:03:21   作者:YingLi  
這篇文章主要為大家介紹了C到C++的升級(jí)關(guān)系及區(qū)別實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、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)文章

最新評(píng)論