(15)“C不高级,学C++、JAVA、C#才够味”
也许谭浩强老师的C语言教材是绝大多数高校学生学习的第一门编程课程,所以在许多学生的心目中,觉得C是一种入门级的语言,他们舍弃基础而追逐花哨的Visual XXX、Java、ASP、PHP、.net,他们以为这样做“赚大了”。
非也!
C是一种多么富有魅力的语言!在今时的绝对多数底层开发中,仍然几乎被C完全垄断。这些领域包括操作系统、嵌入式系统、数字信号处理等。舍弃C的经济基础搭.net的高层建筑实在是危险。
我们总是以为自己掌握了C,那么请写一个strcpy的标准函数。您的答案若是:
void strcpy( char *strDest, char *strSrc )
{
while( (*strDest++ = * strSrc++) != ‘\0’ );
}
很遗憾,您的程序只能拿到E。看看拿A的strcpy:
char * strcpy( char *strDest, const char *strSrc )
{
assert( (strDest != NULL) && (strSrc != NULL) );
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ );
return address;
}
这个程序考虑了什么?
(1)程序要强大:为了实现链式操作,将目的地址返回,函数返回类型改为char *
(2)程序要可读:源字符串指针参数加const限制,表明为输入参数
(3)程序要健壮:验证strDest和strSrc非空
如果这三点中您只考虑到0点或1点,那么请回家好好修炼一下C。因为这个最简单的strcpy已验证出您的C语言基础只能叫做“入门”。
再写个简单的strlen,这么写就好了:
int strlen( const char *str ) //输入参数为const
{
assert( strt != NULL ); //断言字符串地址非0
int len;
while( (*str++) != '\0' )
{
len++;
}
return len;
}
由此可见,写好这些简单的函数也需要深厚的基本功,永远不要放弃对基本功的培养。