今天看了一下书,感觉typedef确实不错,相比define,不过实际上是各有千秋的。
现在就来看看两者各自的优缺点吧。
一:typedef与define
(1)define是预处理指令,在编译预处理时进行简单的替换,不做正确性的建和擦,不管含义是否正确照样进行替换,只有在编译已被展开的源程序时才会发现可能的错误并出错。
(2)typedef作用时声明一个新的类型名代替已有的类型名,是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名,他是语言编译过程的一部分,并不实际分配内存空间
二:static:
在c语言中,它有三个主要的作用:
在一个函数体中,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
在模块内(在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其他函数访问。它是一个本地的全局变量
在模块内,一个被声明的静态的函数只能被这一模块内的其他函数调用,那就是,这个函数被限制在声明它的模块的本地范围中使用
总结一下,就是它起到限制变量的作用域和设置变量的存储域的作用。
三:const
const意味着只读:
const int s; int const a;这两个作用是一样的。
const int *a;a 是一个指针,这个指针指向常整数型,指针可变,但是整形数不可变。
int * const a;a是一个指向整数型的常指针,也就是指针不可变,而整数是可以变的。
合理使用const可以很自然地保护那些不希望被改变的参数,减少debug
而且将变量声明为常量就是为了告诉用户这个参数的应用目的
能够产生更加紧凑的代码