2019年10月11日

数组与指针

摘要: 有这样一种说法:“在C中,如果数组名后不加[],只单独写数组名,那么该名称表示指向数组初始元素的指针”。 这种说法的信息量是负的。 在语法上,数组和[]是没有关系的。 事实上,在最开始的时候,p[i]只是*(p + i)的简便写法;下标运算符[]原本只有这种用法,它和数组是没有关系的。 也就是说,数组声明中的[]和数组元素表达式中的[]意义是完全不同的。 事实上,由于a + b与b + a的意义没... 阅读全文

posted @ 2019-10-11 16:28 freshair_cn 阅读(118) 评论(0) 推荐(0) 编辑

C中空指针、NULL与0

摘要: 空指针是指确保可以没有指向任何一个对象的指针。空指针常量值通常使用宏定义NULL来表示。 空指针和任何非空指针比较都不相等,因此经常作为函数异常时的返回值使用。 链表也经常在数据末尾放一个空指针提示后续没有数据。 那么NULL是什么呢? 通常情况下,NULL就是0. 例如有些代码里会把NULL宏定义成这样: #define NULL 0 但是0与NULL不是完全等价的。 例如字符串使用’\0’结束... 阅读全文

posted @ 2019-10-11 15:15 freshair_cn 阅读(935) 评论(0) 推荐(0) 编辑

C中为什么不能用==比较字符串?

摘要: 通常的回答是,==比较的不是字符串的内容,它是在比较指针。或者说,==(或者!=)仅比较两个字符串的首地址,而不会比较字符串每个字符。 那其实接下来应该问的问题是,为什么会只比较首地址呢? 因为早期的C语言只能使用标量。 简单的说,标量scalar就是指char, int, double, enum等数值类型,以及指针。像数组、结构体、共同体这样将多个标量组合起来的类型,被称为聚合类型aggreg... 阅读全文

posted @ 2019-10-11 11:15 freshair_cn 阅读(2360) 评论(0) 推荐(0) 编辑

导航