c - 涉及 char 数组的 C 语句的含义

标签 c arrays char

我正在为一个项目研究算法,我遇到了一些我认为可能有用的代码。但是,当我尝试阅读代码时,我在理解代码中的语句时遇到了一些困难。这是代码。

int firstWord[MAX_WORD_SIZE] = {0}, c = 0;

while (word1[c] != '\0') //word1 is char[] sent as a parameter
{
  firstWord[word1[c]-'a']++;
  c++;
}

我理解(我希望是正确的)第一行是设置我的最大大小的整数数组,并将元素初始化为零,同时使初始计数器值“c”为零。

我知道 while 循环遍历 word1[] 数组的所有字符,直到它到达最后一个字符 '\0'

我对 firstWord[word1[c]-'a']++; 这行感到困惑 word1[c] 应该给出一个字符,那么 -'a' 有什么作用呢?这是否会将 char 转换为一个整数,从而允许您访问 firstWord[] 数组的元素并使用 ++ 递增?如果是,哪个元素或整数由 word1[c]-'a'

给出

最佳答案

word1[c]-'a'表示word1第c位的字符与'a'的整数值之差。它主要计算单词中字母出现的次数。

所以如果 word1[c] 是 'b',那么 word1[c]-'a' 的值将是 ('b' - 'a') = 1。所以 'b' 在word 将递增 1。

关于c - 涉及 char 数组的 C 语句的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21745100/

相关文章:

c++ - 从 char 获取字节值

iphone - iOS 6 数组格式

python - 从Python文件中读取数组

java - java.lang.ArrayIndexOutOfBoundsException : 0 是什么意思

c - K 和 R C 编程练习 1-19

c - 在c中对字符串数组进行排序

c - 带 NULL 的指针算法

编译错误/查询

c - 这些声明之间的技术差异是什么?

c - Sublime Text C 插件——代码模板和自动完成