<高质量C>C语言基础与变量
来源:互联网 发布:c a星算法 编辑:程序博客网 时间:2024/05/07 08:32
尽管用C语言做过不少项目,但至今连main函数都搞不明白,真是罪过.
void mian()?int main()?int main(int argc,char *argv[],...)?
mian函数的作用是标定程序运行的开始与结束,结束时由return返回一个值代表离开main,同时销毁过程,以及销毁自动存储生命期的对象。以上3中形式都是可以的,这得根据编译器而定。但是标准的连接规范和调用约定是第三种,也就是说任何编译器都会支持第三中方式。其中 argc代表参数传递的个数,argv[]是参数传递后转化为ASCLL的字符串。
连接规范,又是一个陌生词汇。这是用来规范语言在内部的名称,若是编译器采用不同的连接规范可能会导致内部名称不一致而连接失败。 例如C标准连接规范中main 的内部名称是_main。通用的连接规范就是C连接规范 extern "C".
例如 extern "C" void add(); 需要注意的是,声明和定义都要extern "C".
void指针,在C语言中NULL默认为((void*) 0),常用于函数参数,来传递一个函数,并且这个函数与调用者之间已经约定好类型。
内存自然对齐,例如32位系统中(指精简指令集计算机如ARM-CORTEX),int和指针地址的变量要求应该能被4整除,short变量地址应该是偶数。具体存放顺序与大小段模式有关。小端格式:低地址放低字节,高地址放高字节。大端相反。
类型转换分为显式和隐式。大小相同的类型转换没问题,但是不同时就会涉及到内存访问扩张和截断引发错误。
布尔量的判断用 if(flag) if(!flag)
整型与零值判断用 if(0==value) if(0!=value)
浮点与零值判断用 if(abs(x-y)<=EPSILON) //x==y if(abs(x-y)>EPSILON)//x!=y
因为浮点型与存储的精度有关,所以简单的x==y,可能不能达到效果。
如x=1.1234562 y=x=1.1234561 如果精度在10-6的话就可以理解为相等。
下面又有一个有意思的比较, 在c语言中
for(i=0;i<1000;i++)
for(j=0;j<100;j++)
{
a[i][j]=1;
} 执行的速度快,还是
for(j=0;j<100;j++)
for(i=0;i<1000;i++)
{
a[i][j]=1;
} 快?
答案是第一种快,尽管第二种跨越嵌套的次数少,但是在C语言标准中,数组的索引是按照地址索引的,如果按列行索引,出现跨越内存页的次数就会越多,cache命中率相对也低(这个不太懂,是内外存速度匹配有误?)。最终导致效率降低。
goto,一般情况杜绝使用,但是在3重以上的for循环要退出时,用一下还是挺好的。
- <高质量C>C语言基础与变量
- <高质量C>C语言基础和变量(二)
- 高质量程序设计指南:C++/C语言
- <高质量C>C程序设计基础(二)
- C语言基础--变量
- 黑马程序员-----高质量C语言编程
- c语言与变量
- 《高质量程序设计指南---C++/C语言》 下载
- 《高质量程序设计指南:C++/C语言》图书信息
- 《高质量程序设计指南:C++/C语言》面试题整理
- 《高质量程序设计指南:C++/C语言》 林锐
- 《高质量程序设计指南---C++/C语言》 林锐、韩永泉
- 高质量程序设计指南C++/c语言读书笔记 第一章
- 高质量程序设计指南C++/c语言 第二章
- 高质量程序设计指南C++/c语言 第三章
- 高质量程序设计指南C++/c语言 第四章
- 高质量函数C++,C语言设计--指针
- <高质量C>C函数设计基础(一)
- Android学习路线
- 将普通用户修改成root权限后带来的
- 管理做不好,是因为管理者你说话不算话
- C# 调用WebService
- 遍历Map的四种方法
- <高质量C>C语言基础与变量
- Google android
- bip_check.sh
- CentOS中Redis安装
- centOs遇到java.net.UnknownHostException错误记录
- 微信公众平台开发(3)-回复消息
- Coursera台大机器学习课程笔记3 – 机器学习的可能性
- 在python中嵌入c/c++
- Django request和response对象