C与C++的关系
C++继承了所有的C个性
C++在C的根底上提供了更多的语法和个性
C++设计指标是运行效率与开发效率的对立
C++强调语言的实用性
C++所有的变量都能够再须要应用时在定义
C语言中变量都必须在作用域开始的地位定义
register 关键字申请编译器将局部变量存储于寄存器中
在C++中仍然反对register关键字
C++编译器有本人的优化形式
C语言中无奈获取register变量的地址
C++中能够获得register变量的地址
C到C++的降级
在C语言中,反复定义多个同名的全局变量是非法的
C语言中,多个同名的全局变量会被链接到全局数据区的同一个地址空间上
在C++中,不容许多个同名的全局变量
#include <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("c=%p\n",&a); printf("end....\n"); return 0;}
struct关键字的增强
C语言中的struct定义了一组变量的汇合
C语言中struct定义的标识符并不是一种新的类型
C++中的struct用于定义一个全新的类型
C代码:
typedef struct _tag_student Student;struct _tag_student{ const char* name; int age; };
C++代码:
struct Student{ const char *name; int age;};
int f()与intf(void)区别?
在C编译器中,int f()示意的返回值为int,参数无数个;int f(void) 返回值为int,空参数;
在C++编译器中,二者没有任何区别
C++中所有的标识符都必须显示的申明类型
C语言中的默认类型在C++中是不非法的
在C语言中
int f()示意返回值为int,承受任意参数的函数
f(void)示意返回值为int的无参函数
在C++中
int f()和int f(void)具备雷同的含意
示意返回值为int的无参函数
#include<stdio.h>struct Student{ const char *name; int age;};int f(int i){ printf("i=%d\n",i);}int g(){ return 0;}int main(){ Student s1 = {"zhangyingli",30}; Student s2 = {"zhang",30}; return 0;}
小结:
C++更强调实用性,能够再任意中央申明变量
C++中的register只是一个兼容的作痛
C++编译器更好的进行优化
C++中的任意标识符都必须显示的指明累心