博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C陷阱与缺陷的学习笔记
阅读量:6323 次
发布时间:2019-06-22

本文共 1483 字,大约阅读时间需要 4 分钟。

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之前使用它;
函数调用只能出现在局部非静态变量中;

转载地址:http://nvpaa.baihongyu.com/

你可能感兴趣的文章
bodymovin实现将AE动画转换成HTML5动画
查看>>
python中的迭代器和生成器
查看>>
删除一个链表中的重复元素
查看>>
html之一
查看>>
ListCtrl控件的使用
查看>>
OSGI 和Java Classloader
查看>>
python连接数据库的方法
查看>>
How to ignore SSL certificate errors in Apache HttpClient 4.4
查看>>
CentOS6.5系统软件仓库及挂载NTFS
查看>>
JQuery基本知识框架思维导图(上)
查看>>
java抓取网页内容
查看>>
我的Java开发学习之旅------>Java经典排序算法之归并排序
查看>>
我的Android进阶之旅------>Android中通过adb shell input来模拟滑动、按键、点击事件...
查看>>
Class的基本语法
查看>>
SOUI新组件SIpcObject介绍
查看>>
Spring在代码中获取bean的几种方式
查看>>
百度软件开发实习生c++方向面经(一面)
查看>>
JS引用类型之——数组
查看>>
安装Git
查看>>
js_初识js_js基本语法和数据类型
查看>>