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++ 中的任意标识符都必须显示的指明累心