1
用单引号括起的字符实际代表一个整数,整数值对应于该字符在编译器中采用的字符集对应的序列值;
双引号括起的字符串,代表的是一个指向无名数组起始字符的指针,该数组被双引号之间的字符和‘\0’初始化。
对于'yes'这种形式的表示,不同的编译器采取的方式不同,但大都理解为"一个整数值,由y e s 所代表的整数值按照特定编译器实现定义的方式组合得到",vc采用用后一个字符覆盖前一个字符,最后得到的是最后一个字符的值

2
词法分析中的"贪心法则"----每一个符号应该包含尽可能多的字符,
所以n-->0的含义是 n-- >0,而不是n- ->0;

3
注意分号结束的标志可能会引起错误,比如定义了
struct log{ int date; int time}若没有分号 则struct会被编译器认为是主函数返回类型
main(){}

使用case分支语句时若没有用 break就要注释出来,防止被误认为写错;
4
c语言的数组需要注意的两点:
1----c语言只有一维数组,而且数组的大小在编译期间就作为一个常数而存在,但是数组中的元素可以是任何对象,所以可以仿真出一个多维数组;
2----通过数组可以获得指向下标为0 的元素的指针,有关数组的其他操作看上去是下标运算,其实是指针运算,因此可以根据指针的行为来确定下标的行为
如*(a+i)即为下标为i的元素的引用,这种写法如此常用,因此被简记为a[i];

数组作为参数毫无意义,因此c将自动地将作为参数的数组声明转换成相应的指针声明
int strlen(int a[])
int strlen(int *a)等价

main(int argc, char *argv[])强调argv指向某数组的起始元素的指针,数组的元素为字符指针类型
main(int argc, char **argv)等价
我们需要记住的是,复制指针并不同时复制指针所指向的数据。

5
为main函数提供返回值,默认的是int,一般情况下系统会根据返回值来判断程序是否执行成功,0代表执行成功;

若函数仅被文件内的其他函数调用就可以声明为static,因为它对外部是不可见的

6
库函数setbuf(stdout,buf)
程序输出有两种形式,一种是即时输出,会造成较高的系统负担,另一种是先暂存起来,然后大块写入的方式,通过setbuf控制在实际 的写之前控制产生数据的量
输出库的stdout----buf缓冲区---实际写入到stdout
main()
{
int c;
char buf[BUFSIZ];
setbuf(stdout,buf);
while((c=getchar())!=EOF)
putchar(c);
}
问题是buf被清空是在main结束之后,实际在此之前buf已经被释放;
解决方法1---在main外面声明static char buf[BUFSIZ];
动态分配缓冲区,在程序中不主动去释放分配的缓冲区,所以在main函数结束时并不会释放缓冲区,
char  *malloc();
setbuf(stdout, malloc(BUFSIZ));

ANSI c标准 ----C99最新的c语言标准

处理64位数据可以用C99标准的long long来表示
typedef和#define有什么区别?
一般来说最好使用typedef,能够正确处理指针类型,
#define的优点是可以使用#ifdef来处理头文件的重复包含;
另外不能在定义typedef之前使用它;
函数调用只能出现在局部非静态变量中;

最新文章

  1. HTML5 学习总结(一)——HTML5概要与新增标签
  2. iOS 系统架构
  3. Java面试题汇总(一)
  4. 监听SD卡状态
  5. [转]C#压缩打包文件
  6. Swift 用Delegate和Block实现回调的Demo
  7. js不间断滚动
  8. 转:NLog 自定义日志内容,写日志到数据库;修改Nlog.config不起作用的原因
  9. TP分析
  10. asp.net生成缩略图、文字图片水印
  11. J2EE开发框架搭建(2) - springmvc4 + spring4 + hibernate4 整合
  12. Web监听器导图详解(转)
  13. Java基础之路(四)--流程控制语句
  14. Python实战171203统计
  15. 6.jQuery(实例)
  16. cmd copy命令 文件复制【转】
  17. Android Studio 使用入门
  18. centos 为OPENJDK配置JAVA_HOME环境变量,安装MAVEN
  19. mysql集群搭建,主主复制
  20. MapReduce工作原理(简单实例)

热门文章

  1. rgba()兼容IE8
  2. java 转换流
  3. jQuery利用JSON数据动态生成表格
  4. centos中rabbitmq的安装及php支持
  5. K2与OData和Swagger集成,从任何设备无需代码获取数据
  6. boost库的使用(一)
  7. [App]Taste VS2015 && Android Studio
  8. SQL Server数据库---》基础
  9. php正则匹配utf-8编码的中文汉字
  10. Python类的多态的例子
  11. RedisAsyncClientAdapter-------------接口继承
  12. K3实现按虚拟件/组件发料
  13. elasticsearch 动态增加副本
  14. ansible一键部署k8s单机环境
  15. (python爬取小故事网并写入mysql)
  16. ztree根据treeId展开指定节点并触发单击事件
  17. 连接mysql连接不上遇到的问题
  18. 如何实现php手机短信验证功能
  19. Linux命令之du
  20. css 边框使用