首先说一下,c的缺陷不是在批判c语言的,只是要提醒c中的陷阱,对于如何成为一个c语言高手很有作用的。
先来谈谈关键字吧!
1.const
它的作用是什么?我们可以把它理解为‘只读’的普通的变量。在现在的编程中,这个关键字我用的还是比较少的,但是看那些高手写的文章里,这个关键字有时可以成为重点的,常用的地方有,函数的传递参数,当然这个参数是不想被改变的参数,这样可以使用它。还有一点就是,常指针 const int *a ;与 int * const a;有什么区别?
前者是指针指向的变量时只读的,不可改变的;后者是指针是不可变的,指针的指向的变量时可以变的;当然还有指针和指向的变量都是不可以改变的,写出来就是 const int * const a ;
2.volatile
从这个关键字就可以看出你是不是属于嵌入式的编程人员的了。它主要有三个作用,但我现在的理解就是:在中断函数里使用,这样的变量不会被编译器优化,而且每次读取时,会重新回储存器里读取,而不是直接读取缓存里的数据。这个关键字还是很有作用的,使用过了,并且感受过它的神奇之处。当然,这个关键字还有2个作用,在这就不列举了,自己查资料吧!
3.void
我想我们对这个关键字都不会陌生的,它常用在函数的返回类型;参数的传递个数;空类型指针;
在这就分析一下空类型指针,void * p ; int * q;那么有类型的指针和空类型的指针可以相互转换吗?那必须的啊,额呵呵,p=q;这样是成立的,但是q=p;这样编译器会报错的,原因是不能把一个空类型赋值给已知的类型。但是在GUN里,这样却是正确的,因为它把空类型的指针转换为char *类型了,但是ANSI却不可以的。所以我们编程的时候,还是遵照ANSI吧。
最后说一句,如果你爱编程,请你爱c语言;如果你爱c语言,请你爱指针;如果你爱指针,请你爱指针的指针!
还有的以后再写了。。。。。。。