C陷阱与缺陷笔记

首先声明,我是一个C语言的初学者,虽然在大一学过,但基本没学到什么,最近看看C语言的一些书,K&R的书很不错,不过的确需要一些基础,偶然在图书馆看到了《C陷阱和缺陷》的书,觉得很有意思,有些自己一直没有注意到,或者一直似懂非懂,写下一些笔记吧:

字符与字符串以及‘和“的区别

用单引号引起的一个字符其实是一个整数,一般对于我们的编译器是ASCII值,而双引号引起来的字符串代表一个指向无名数组的指针,该数组被双引号之间的字符以及一个额外的二进制为零的字符‘\0’初始化

在C语言中,字符串常量代表了一块包括字符串中所有字符以及一个空字符('\0')的内存区域的地址

printf("Hello,World\n");

与下列语句等效:

char hello[]={'H','e','l','l','o',',','W','o','r','l','d'.'\n',0};

printf(hello);

虽然第二种方法gcc会产生警告:警告: 格式字符串不是一个字面字符串而且没有待格式化的实参

但记过的确是一样的

由运算符的优先级引发的错误:

while(c=getc(in) != EOF)

       putc(c,out);

这个错误以前我也犯过,结果调试了很长时间才调试出来,不要怕写的程序会有错,要学会去调试,相信写的程序一定会有结果,调试运行成功的程序收获更多

运算符的优先级:

算术>移位>关系>逻辑

其实这个地方还是不是特别清楚


else悬挂引发的问题!!!


指针与数组

C语言中的数组值得注意的地方有两点:

1.C语言中只有一维数组,而且数组的大小必须在编译期就作为常数确定下来,然而,数组的元素可以是任何类型的对象

2.对于一个数组,我们只能做两件事:确定该数组的大小,以及获得该数组下标为0的元素的指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值