虽然在实际上没怎么使用C语言了,但是看到C语言的书总是忍不住想看一下(喜欢这种至简,却又有着强大能力的语言),读完书随手写的一些笔记,略有些简单。书还是很喜欢的,推荐给大家(C专家编程)
第一章 C:穿越时空的迷雾
- 原型决定C语言不支持函数重载
//previous definition is here
void overload(int a)
{
printf("%d\n",a);
}
void overload(double a)
{
printf("%lf\n",a);
}
- 参数传递类似于赋值
void assign(char a)
{
printf("%d\n",a);
}
//指针类型才会出现这种错误
void assignpoint(char *p)
{
printf("%s\n",p);
}
//gcc C++ error C warning
int main()
{
const char a = 5;
assign(a);
const char *p = "helloworld";
//argument is incompatible with prototype
assignpoint(p);
}
- 尽量不要使用无符号类型
int array[5] = {
1,2,3,4,5};
//当数组类型发生变化时,这种方式比下面的方法更通用
#define TOTAL_ELEMENTS sizeof(array)/sizeof(array[0])
// #define TOTAL_ELEMENTS sizeof(array)/sizeof(int)
int main()
{
int d = -1;
// TOTAL_ELEMENTS类型是无符号整数,d被转化为无符号数
// 需要强制类型转化
// if(d<(int)TOTAL_ELEMENTS)
if(d<TOTAL_ELEMENTS)
{
printf("hello");
}
}
第二章 这不是Bug,而是语言特性
书中的这句话成了现在的经典啊
this is not a bug,it’s a feature
- switch
#include<stdio.h>
int main()
{