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++中的任意标识符都必须显示的指明类型
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。