1. sizeof
在C里,字符常量和枚举符的大小都是sizeof(int);而在C++里,sizeof('a')等于sizeof(char),且C++实现可以自己为枚举选择最合适的大小。
#ifdef__cplusplus
extern“C”{
#endif
intx[99];
intmain()
{
structx{inta;};
sizeof(x);/*在C中是数组x的大小(99*sizeof(int)),在C++中是结构x的大小*/
}
#ifdef__cplusplus
}
#endif
2. 函数声明
在C里,大部分函数可以在没有预先声明的情况下调用。例如:
#ifdef__cplusplus
extern"C"{
#endif
main()
{
doublesq2=sqrt(2);
printf(“Thesquarerootof2is%g"n”,sq2);
}
#ifdef__cplusplus
}
#endif
在C里,对于那些声明中没有描述参数类型的函数,它们就可以取任意个数的任意类型的参数:
voidf();/*未提到参数类型*/
voidg()
{
f(2);
}
在C语言里,函数定义可以采用另一种语法,在参数表之后另外描述参数的类型:
voidf(a,p,c)
char*p;
charc;
{
return;
}
3. 数据类型
在C和C++标准以前的版本中,类型描述符默认为int,在上一个函数f中,a的类型就默认为int型的。
consta=7;/*在C中假定a的类型为int*/
C允许将struct定义用在返回值类型和参数类型声明中。例如:
structS{intx,y;}f();
voidg(structS{intx,y;}y);
在C里可用将整数赋给枚举类型的变量:
enumDirection{up,down};
enumDirectiond=1;
在C里,一个全局数据对象可以在同一个编译单位里声明多次,不必使用extern声明符,条件是在这些声明中至多只有一个提供了初始化表达式,在这种情况下就认为对象只定义了一次。在C++中,每个实体必须定义恰好一次:
inti;
inti;
inti;
inti=0;
inti;/*这在C里是允许的*/
在C里,void* 可以作为对任意指针类型的变量赋值操作右边的运算对象,或用于对这种变量的初始化。
voidf(intn)
{
int*p=malloc(n*sizeof(int));
}
在C里,嵌套结构的名字与它们嵌套于其中的结构放在同一作用域里。例如:
structS
{
structT{/**/};
/**/
}
structTx;
在C里,数组可以用于多于它所需元素个数的初始式进行初始化。例如:
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
阅读
好看
已推荐到看一看
你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
取消
分享想法到看一看
确定
最多200字,当前共字
微信扫一扫
关注该公众号