从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++程序了。
做人要厚道
转贴请注明出处
- 从C到C++的第一步:了解C和C++在语法上的不同
- 从C到C++(上)
- C的第一步
- C语言的第一步
- 关于C语言的第一步
- 走上不归路的第一步-C
- C++和C的不同
- C++:不同循环结构计算从1到100的累加和
- 从C的声明符到Objective-C的Blocks语法
- 从 C 的声明符到 Objective-C 的 block 语法
- C语言到c++的第一步 注释转换
- 从C语言的变量声明到Objective-C中的Block语法
- Java与C语法上的区别
- Java与C语法上的区别
- 初学C语言时在语法和语义上容易犯的一些错误
- c的语法总结
- C与C++的不同在哪里?
- 迈出学习C语言的第一步
- 神奇的分形艺术(二):一条连续的曲线可以填满整个平面
- 免费3D小游戏推荐:Counterclockwise
- 经典谬论:用复数来证明1=2
- 柳文扬——我最喜欢的科幻作家之一
- 只剩三天!Transformers观前提示
- 从C到C++的第一步:了解C和C++在语法上的不同
- 神奇的分形艺术(一):无限长的曲线可能围住一块有限的面积
- 猜单词游戏 原创asp小程序Guess the Word
- 如何架设你自己的个人网站
- C语言速成手册(六):其它问题、后记
- 大一自传
- 准备换空间商,大家帮忙推荐一下
- 超真实声音及声音错觉
- 猫扑强帖推荐:由一百个方案构成的一个方案