gpt4 book ai didi

计算结构中的关键字

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:36 34 4
gpt4 key购买 nike

[K&R Book 中的程序]

这是计算单词的程序。我想问一下为什么这个程序在第 12 行将 word 作为函数 getword 的第一个参数而不是 *word 传递。 Word 将获取数组第一个元素的地址。而 *word 会得到值。所以,我们不应该传递 *word 而不仅仅是 word。我想我问错了问题,因为 getword 应该返回一个 int 并且如果它不是第一个的地址,它们就不可能返回 int位置。我仍然怀疑它。提前致谢。

#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;
}

getword 代码:

int qetword(char *word,  int lim) 
{
int c, qetch(void);
void unqetch(int);
char *W = word;
while (isspace(c = qetch()))
;
if (c I= EOF)
*W++ = c;
if (lisalpha(c)) {
*W = '\0';
return c;
}
for ( ; --lim > 0; W++)
if ( lisalnum(*W = getch())) {
unqetch ( *W) ;
break;
}
*W = '\0';
return word[O];
}

最佳答案

当您在表达式中使用 char 数组时,它会退化为 char*。将其传递给函数就是这种用法的一个示例。

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

当你声明时:

char word[MAXWORD];

*word 的计算结果为 char,特别是数组的第一个字符,而不是 char*

关于计算结构中的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24621620/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com