标签:无法 多个 软件学院 目标 面试题 课程 存在 作用 异常
C++ 以C语言为基础,增加了对面向对象的支持,并做了类型加强、函数加强、异常处理等优化。
C++更强调语言的实用性
所有的变量都可以在需要使用时再定义(在C语言中的变量都必须在作用域开始的位置定义)
C++中不允许定义多个同名的全局变量(C中重复定义多个同名的全局变量是合法的,这些同名的全局变量最终会被链接到全局数据区的同一个地址空间)
C++中所有的标识符都必须显示的声明类型(C语言中的默认类型在C++中是不合法的)
对上述的C到C++升级的特性(1、2、3、4),用代码的方式直观的来感受
#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("&a = %p\n", &a);
printf("End...\n");
return 0;
}
所有的变量都可以在需要使用时再定义
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
c += i * j;
}
}
C++中可以取得register变量的地址
register int a = 0;
printf("&a = %p\n", &a);
C++中不允许定义多个同名的全局变量
#include <stdio.h>
int g_v;
int g_v;
对上述的C到C++升级的特性(5、6),用代码的方式直观的来感受
#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;
}
C和C++中结构体的等价定义如下:
//C语言定义如下:
typedef struct _tag_student Student;
struct _tag_student
{
const char* name;
int age;
};
//C++定义如下:
struct Student
{
const char* name;
int age;
}
C++中所有的标识符都必须显示的声明类型
int f()与int f(void)有区别吗?
有区别,也没有区别,有没有区别要看是在C语言中使用还是在C++中使用,如果在C中,那就是有区别,在C++中那就没有区别了,因为在C++中所有的标识符都必须显示的声明类型,不允许二义性存在,这是对C的一个升级,因为在C中参数为空时,可以接收任意多个参数。
以上的知识点均来源于狄泰软件学院唐老师的课程
标签:无法 多个 软件学院 目标 面试题 课程 存在 作用 异常
原文地址:https://www.cnblogs.com/ldhbetter/p/11704837.html