从C到C++的第一步:了解C和C++在语法上的不同

来源:互联网 发布:网络防雷评标 编辑:程序博客网 时间:2024/05/17 09:45

    C++语言是C语言的扩展。你把C源码的扩展名改成cpp通常都可以直接编译。从语法上看,C语言是C++语言的子集,个别地方除外。这篇日志专门收集C和C++语法上的不同,指出C和C++的极个别不兼容的地方,让大家在学习C语言后可以尽快写出正确的C++代码。这篇日志需要众牛过目并补充。

系统保留字
    C++多出了很多功能,因此系统保留字比C更多。如果你的C源码中的变量名或函数名正好是C++的系统保留字,此时将不能通过C++的编译。

void*类型赋值
    在C++中你不能把void*类型直接赋值给其它任何类型。下面这句代码在C中可以通过编译,但在C++中则不能通过编译。你需要使用类型转换后再赋值。
int *x = malloc(sizeof(int) * 10);
    
指针的初始化和释放
    在C语言中,对指针的初始化和释放通常这样写:
int *x = malloc( sizeof(int) );
int *x_array = malloc( sizeof(int) * 10 );
free( x );
free( x_array );

    但在C++中,这些操作通常使用new和delete运算符完成:
int *x = new int;
int *x_array = new int[10];
delete x;
delete[] x_array;


结构的声明
    C语言中声明结构变量需要在结构名前面加一个struct。在C++中那个struct可以省略。
    也就是说,在C语言中你需要这样写:
struct date
{
    int year;
    int month;
    int day;
};
struct date now;

    但在C++中,你可以写成这样:
struct date
{
    int year;
    int month;
    int day;
};
date now;



函数声明与调用
    C++中严格禁止先调用后声明。你可以把函数声明写在前面或使用向前引用。下面的程序代码在C中是合法的,但是在C++中无法通过编译。
#include <stdio.h>
int main()
{
    printfDomain();
    return 0;
}
int printfDomain()
{
    printf("matrix67.com");
}


bool类型
    C语言中使用bool类型需要包含stdbool.h文件。C++本身提供了bool类型。

主程序返回值
    C语言中,你需要在主函数结束前加一句return 0。C++中主函数自动返回0,因此你可以不写return 0。放心,不写return 0在编译时连个警告都没有。

C++的新特性
    这不属于本文的讨论范围。这是我们以后着重要讨论的东西。如果你不急着用C++的新特性,了解上面的东西后你就已经可以写出正确的C++程序了。

做人要厚道
转贴请注明出处

原创粉丝点击