首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

最容易忽略的C语言知识点细节,编程大牛进阶之路!

当你选择了一种语言,意味着你还选择了一组技术、一个社区。——Joshua Bloch

一条长语句需要换行写,可以在行的末尾加入反斜杠 \ 表示;宏都是单行定义,如果多行定义,也是用反斜杠 \ 表示。

例如:

#define LONG_MACRO \

"...........很长的字符串哈........."

int i,j,k \

x,y,z;

变量有全局变量、局部变量,全局变量系统默认初始化,局部变量不会自动初始化,建议所有变量使用前,手工初始化。

基本数值类型转换有两种,一种隐式,一种显式,建议在需要类型转换的情况下,一律使用强制转换运算符 (类型)变量名显式转换,转换的原则是从取值范围较小的类型转到取值范围较大的类型,结果值不会损失,反之结果值则损失部分值。

数组分配的内存空间是连续的,从低地址到高地址,数组第1个元素的地址就是内存空间的首地址。

数组的下标是从0开始,长度为n的数组,最大下标是n-1,数组下标超出范围,越界访问是严重的错误。

数组可以作为参数(指针或数组形式)传递给函数,但是不能作为函数返回值,可以返回指向数组的指针。

例如:

sizeof(int)是求类型长度的运算符,不是函数。

函数声明中的参数名称可以省略,也可以和函数定义不一样。

例如:以下三种都是声明相同的函数func,第三种声明且定义了函数。

int func(int,int);

int func(int a, int b);

int func(int c, int d)

{

}

main函数可以不带参数,也可以带两个参数,带参数时,执行程序时可以实现命令行参数功能。

例如:

编译以后程序名称为 test.exe

函数类型是由函数返回值类型、函数名称、参数类型列表标识,只要三者相同则为同一个函数类型,参数名称不是。

C语言函数允许递归调用,在函数中调用自身,函数递归是将大问题化解相似的小问题去解决,函数必须设置递归调用的结束条件,一般是当化解成的小问题可以直接解决时,递归返回值。例如计算阶乘值,例如10的阶乘,化解成10*9的阶乘,9的阶乘可以进一步化解成9*8的阶乘,每次求阶乘的方式一样,只是问题大小不一样,当求最小问题1的阶乘时,就可以直接返回1。

例如:

C语言函数支持变长参数,参数个数可以不确定,通过标准库提供支持。

位段类型空间分配规则,当一个int型无法容纳全部位段信息,就会再次分配另一个int类型,空间只会以int的整数倍分配;当int型剩余的位数无法满足当前位段成员要求,则该成员的值会直接存储到下一个int型的空间,不会跨两个int型空间存储。

参数化宏实现函数功能时,更加强大和灵活,因为没有类型限制。

例如:

#define MAX(a,b) ((a) > (b) ? (a) : (b))

返回a,b中值比较大的,a,b只要能比较大小就可以,不限定类型。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200415A0GQH300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券