计算结构中的关键字

时间:2014-07-07 23:41:31

标签: c structure

[来自K& R Book的节目]

这是计算单词的程序。我想问一下为什么这个程序已经通过word作为第12行中{1}}的第一个参数,而不是getword*word将获取数组第一个元素的地址。虽然Word会获得价值。因此,我们不应该通过*word而不是*word。我想我问的是错误的问题,因为word应该返回getword,如果它不是第一个位置的地址,则它们不会返回int。我仍然怀疑它。提前谢谢。

int

getword的代码:

#include <stdio.h> 
#include <ctype.h> 
#include <string.h> 
#define MAXWORD 100 
int getword(char *, int); 
int binsearch(char *, struct key*, int); 
/* count C keywords */ 

main() 
{ 
  int n; 
  char word[MAXWORD]; 
  while (getword(word, MAXWORD)  !=  EOF)    <<<<<<<-------HERE------->>>>>>>
      if (isalpha(word[O])) 
         if ((n = binsearch(word, keytab, NKEYS)) >=  0) 
             keytab[n].count++; 
  for (n = 0; n  < NKEYS; n++) 
      if (keytab[n].count > 0) 
         printf( "%4d %s\n", keytab[n].count, keytab[n].word); 
  return 0; 
}

1 个答案:

答案 0 :(得分:2)

在表达式中使用char数组时,它会衰减为char*。将它传递给函数就是这种用法的一个例子。

由于被调用的函数getword需要char*作为参数,因此使用声明为char数组的变量是合适的。

宣布:

char word[MAXWORD];

*word评估为char,特别是数组的第一个字符,而不是char*