最近需要写C代码,其实我没有正经研习过C,直接从C++开始的。这几天总结出几点C语法上和C++的区别,作为笔记了。另外还有一些需要特别注意的问题。
这里调试的环境是 Ubuntu 11.10 64bit Desktop,编译器是Intel C Compiler Intel64。
1. C函数不支持引用参数,
void func(int &arg);
这样的函数声明会导致编译器报错。
2. C函数不支持函数默认值,
void func(int arg1,int arg2=0);
此类声明也会导致编译器报错。
3. C语言中没有预定义的布尔类型
bool func(void);
bool param;
会导致编译器报错。
4. 格式说明字符串
printf() 的格式说明符中可使用%f作为浮点数的输出方式,但是在作为输入时,要特别注意double和float类型的不同。具体上使用scanf或者sscanf时,对于double类型,需要这样:
scanf("%lf",&double_param);
5. 指针类型的自动提升(不知道这样说对不对。。)
例:定义函数func()
void func(double* a);
定义指针
int* p;
这样的操作编译器没有给出错误
func(p);
6. 指向数组头的指针引用超限的内存位置
例如:
int *p = (int*) malloc(10*sizeof(int));
printf("%d\n",*(p+10));
很大程度上运行时没有报错。