C到C++的升級關系及區(qū)別實例探究
一、C與C++的關系
- C++繼承了所有的C特性
- C++在C的基礎上提供了更多的語法和特性
- C++的設計目標是運行效率與開發(fā)效率的統(tǒng)一
- c++更強調語言的實用性
所有的變量都可以在需要使用時在定義
int c =0;
for(int i=1;i<=3;i++)
{
for(int j=1;j<=3;j++)
{
c +=i*j
}
}對比:C語言中的變量都必須在作用域開始的位置定義!
二、C到C++的升級
register關鍵字請求編譯器將局部變量存儲于寄存器中
在C++中依然支持register關鍵字
C++編譯器有自己的優(yōu)化方式
C語言中無法獲取register變量的地址,C++中可以取得register變量的地址
C++編譯器發(fā)現程序中需要取register變量的地址時,register對變量的聲明無效
在C語言中,重復定義多個同名全局變量是合法的
在C++中,不允許定于多個同名的全局變量
C語言中多個同名的變量最終會被鏈接到全局數據區(qū)的同一個地址上
實例分析
#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關鍵字的加強
C語言中struct定義了一組變量的集合
C語言中struct定義的標識符并不是一種新的類型
C++中的struct用于定于一個全新的類型
typedef struct _tag_student student;
struct _tag_student
{
const char *name;
int age;
}struct student
{
const char* name;
int age;
}C和C++中結構體的等價定義;
C++中所有的標識符都必須顯示的聲明類型
C語言中的默認類型在C++中是不合法的
在C語言中
int f()表示返回值為int,接受任意參數的函數
f(void)表示返回值為int的無參函數
在C++中
int f()和intf(void)具有相同的意義
表示返回值為int的無參函數
#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語言中:
int f() :int類型的返回值,形參可接收無數個;
int f(void):int類型的返回值,形參不接收任何形參;
C++語言中:
int f()與int f(void)沒有區(qū)別;
小結
- C++更強調實用性,可以在任意地方聲明變量
- C++編譯器能夠更好的優(yōu)化
- C++ register只是一個兼容的作用
- C++ 中的任意標識符都必須顯示的指明類型
以上就是C到C++的升級關系及區(qū)別實例探究的詳細內容,更多關于C到C++升級關系區(qū)別的資料請關注腳本之家其它相關文章!
相關文章
C++?OpenCV實現boxfilter方框濾波的方法詳解
box?filter的作用很簡單,即對局部區(qū)域求平均,并把值賦給某個點,一般我們賦給區(qū)域中心。本文將用C++實現boxfilter方框濾波,需要的可以了解一下2022-10-10

