【解析】
for语句的结构如下所示:
for(初始化条件调整)
{
示例语句
}
第一次顺序:初始化 ->条件->示例语句
第二次顺序:调整->条件->示例语句
第三次顺序:调整->条件->示例语句
...
以此类推。
【示例】
看下面一个示例:
[html] view plain copy
for(i = 0, j = -1j = 1j++) printf("********\n")
其输出是什么呢?不妨先推导一下,再验证自己的结论。
再看一个文本处理的例子(源码来自《系统程序员成长计划》):
[html] view plain copy
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define IS_WORD_CHAR(c) (isalpha(c) || isdigit(c))
typedef void (*OnWordFunc)(void* ctx, const char* word)
int word_segmentation(const char* text, OnWordFunc on_word, void* ctx)
{
enum _State
{
STAT_INIT,
STAT_IN_WORD,
STAT_OUT_WORD,
}state = STAT_INIT
int count = 0
char* copy_text = strdup(text)
char* p = copy_text
char* word = copy_text
for(p = copy_text*p != '\0'p++)
{
switch(state)
{
case STAT_INIT:
{
if(IS_WORD_CHAR(*p))
{
word = p
state = STAT_IN_WORD
}
break
}
case STAT_IN_WORD:
{
if(!IS_WORD_CHAR(*p))
{
count++
*p = '\0'
on_word(ctx, word)
state = STAT_OUT_WORD
}
break
}
case STAT_OUT_WORD:
{
if(IS_WORD_CHAR(*p))
{
word = p
state = STAT_IN_WORD
}
break
}
default:break
}
}
if(state == STAT_IN_WORD)
{
count++
on_word(ctx, word)
}
free(copy_text)
return count
}
之前看到《系统程序员成长计划这本书》,里面常用 void * 指针,然后再转为int时直接使用强转使用,比如 void *int_pt,使用时直接强转 (int)int_pt 。我对此有点怀疑,所以自己写了个小程序验证了一下。证明这种用法是 错误 的。
附上测试源码:
运行结果:
作为一个经典书籍收藏阅读者,在此,我再次推荐我的书列~~大学期间我也走了很多弯路,学习c一直不得章法~~这些书籍还是工作了才了解到,惭愧
楼上也提到了很多,但是没有给出合理的顺序,我按照自身的曲折路线给你推荐下吧~~希望对你有所启发。
0. 一点编程基础都没有,看下《编码的奥秘》和《c语言大学教程》或者楼上说的《the c programming language》(此书有c++版本的,把c换成c++作为书名的,两者都是经典!)也适合作以后的工具书,ps:编码的奥秘出新版了,即使有编程基础,看了此书有百利无一弊,了解计算机系统的发展史,同时对整个计算机体系的整体上的把握会有助于你学习程序员的英语 --- c语言,因为c比较接近机器的思维!
1. 如果之前学习过c语言,学的不扎实,想彻底学的扎实,如果看过国内的c语言的教程,那么你应该买一本《c和指针》,绝对没有争议!
2. 如果c和指针,认真读完了,并且把习题也做了,例子也照着编写了,思考了,学的还可以了,仍想进一步提高,再看一下《c专家编程》,《c缺陷与陷阱》(这个我没看过,但是别人推荐过,也不厚)
3. 《windows程序设计》是一本经典的书籍,和《编码的奥秘》是同一个作者,如其名,此书涉及到windows编程的各个方面,不算是c语言的入门书籍,属于针对某个 *** 作系统平台的应用开发书籍。
4. 《windows核心编程》一书也是经典,也是属于拔高性质的书籍,此书侧重于讲解和使用windows的API进行 *** 作系统相关的各种编程。
目前我也就看了这么多编程以及和你题目相关的书籍,如果你很勤奋,不会太久,上述书籍我是毕业这两年期间看完的,不过时常重新翻看,好书本就不是一蹴而就,读完束之高阁的~~
工作的时候买本国人的《系统程序员成长计划》(c语言的)看看,难得的国产好书~~实践出的真知~
最后与你分享下我的感受,编程习惯和思想比语言本身更重要!学习语言不能孤立地去单独学习一门语言,要从一开始养成良好的编程习惯,使用数据结构和库,同时顺带了解系统API,循序渐进~~
优秀的程序员应该对自己编写的每个字节都了如指掌,与君共勉!
不是不推荐国产的书籍,确实和国外差距很大,我当初对c语言的兴趣完全被谭浩强的那本概念书籍整没了~~好书很多,但是针对自己的情况制定学习路线才是明智的,否则会打消积极性,适得其反。
以上都是我的个人经验,走了很多弯路,终于入门了,提升了~~也希望我的回答能够抛砖引玉~~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)