函数检测增强
/* 在C语言中,重复定义多个同名的全局变量是合法的 在C++中,不允许定义多个同名的全局变量 C语言中多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上 int g_var; int g_var = 1; C++直接拒绝这种二义性的做法。 */ |
int main(int argc, char *argv[]) { printf("g_var = %d\n", g_var); return 0; } |
struct类型加强
struct类型的加强: C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型 C++中的struct是一个新类型的定义声明 |
struct Student { char name[100]; int age; }; int main(int argc, char *argv[]) { Student s1 = {"wang", 1}; Student s2 = {"wang2", 2}; return 0; } |
C++中所有的变量和函数都必须有类型
f(i) { printf("i = %d\n", i); } g() { return 5; } int main(int argc, char *argv[]) { f(10); printf("g() = %d\n", g(1, 2, 3, 4, 5)); getchar(); return 0; } |
总结: /* 在C语言中 int f( );表示返回值为int,接受任意参数的函数 int f(void);表示返回值为int的无参函数 在C++中 int f( );和int f(void)具有相同的意义,都表示返回值为int的无参函数 */ C++更加强调类型,任意的程序元素都必须显示指明类型 /* C++中的布尔类型 C++在C语言的基本类型系统之上增加了bool C++中的bool可取的值只有true和false 理论上bool只占用一个字节, 如果多个bool变量定义在一起,可能会各占一个bit,这取决于编译器的实现 true代表真值,编译器内部用1来表示 false代表非真值,编译器内部用0来表示 bool类型只有true(非0)和false(0)两个值 C++编译器会在赋值时将非0值转换为true,0值转换为false */ |