C的几点知识点总结

1. ++i1和i++的效率分析;

   想必前加和后加,日常编程会用到很多,但你是否考虑过他们的效率比较,在for 循环中也常常用到自加。

int increment()

{

value = value + 1;

return value;

}

这段代码就是编译器的实现前加加的函数;

可以脑补,后加加函数必须控制变量在遇到“;”或“,”才会自加,需要的代码步骤更多;

所以前加加的效率更高,在特别要求效率的情况但对自加时间没限制下,使用前加加是最好的了。

 

2. 函数返回返回值的过程详解;

调用函数会在后大括号即“}”时释放所有的形参变量的空间,如果函数有返回值,其实此时系统会将返回值拷贝于一用于放返回值的空间中,再将此值赋值于主调函数的变量。

但需要强调的是有的编译器为提高效率,不会这样做,会直接赋值于主调函数变量。

3. 函数传递数组时用法解释;

    int ar[] = {4300,23,1,98,5,6,734,56,83,7491,43};

int max_value = Max_Value(ar, n);

int min_value = Min_Value(ar, n);

 如上的代码所示,在调用函数穿递数组时传递的是数组名;

   int max_vealu(int ar[], int n);

而这段代码便是max_vealu函数的定义,可以看出,接收时需注明数组类型;其实数组名便是数组第一个字节空间的指针,函数的传值是值传递,将此指针值传递给形参。

注意数组函数传递的具体写法,不要犯错。

4. 补码;

   不论正数负数在计算机内存中都是以补码的方式存储,正数的补码还是自己,但负数不是,在32位操作系统int申请四字节空间,可以保存的最大值是2147483647(2的31次方减一),在编译中对最大值加一的结果是-2147483648;这是因为发生了溢出。

2147483647在内存中是0111 1111 1111 1111 1111 1111 1111 1111,加一后是1000 0000 0000 0000 0000 0000 0000 0000,

此时符号位是1,被解释为一个负数的补码,还原成原码便是-2147483648.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值