涉及字符数组的C语句的含义

涉及字符数组的C语句的含义,c,arrays,char,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++; } 我理解(希望正确)第一行是设置一个最大大小的整数数组,并将元素初始化

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

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'
做什么呢?这是否将字符转换为整数,从而允许您访问
firstWord[]
数组的元素,并使用
++
递增?如果是,哪个元素或整数由
word1[c]-“a”

给出这是一个计算单词中字母
a
z
数量的程序。这里的关键点是,
'a'-'a'
的值为
0
'b'-'a'
的值为
1
,以此类推


例如,如果
word1[c]
是字母
'd'
,那么
'd'-'a'
3
,因此它将增加
第一个单词[3]
。当一个单词被一个字符一个字符地迭代时,
firstWord[3]
包含单词中字母
'd'
的数量。

这是一个程序,它计算单词中字母
a
z
的数量。这里的关键点是,
'a'-'a'
的值为
0
'b'-'a'
的值为
1
,以此类推


例如,如果
word1[c]
是字母
'd'
,那么
'd'-'a'
3
,因此它将增加
第一个单词[3]
。当一个字符一个字符地迭代单词时,
firstWord[3]
包含单词中的字母数
'd'

似乎此代码正在进行字母计数

1那么-‘a’的作用是什么

如果word1[c]是“a”,那么word1[c]-“a”是0

二,。这是否将字符转换为整数,从而允许您访问firstWord[]数组的元素并使用++递增

是的,是整数促销

3.如果是,由word1[c]-“a”给出哪个元素或整数


如果word1[c]是'a',那么word1[c]-'a'是0

这段代码似乎在进行字母计数

1那么-‘a’的作用是什么

如果word1[c]是“a”,那么word1[c]-“a”是0

二,。这是否将字符转换为整数,从而允许您访问firstWord[]数组的元素并使用++递增

是的,是整数促销

3.如果是,由word1[c]-“a”给出哪个元素或整数


如果word1[c]是“a”,则word1[c]-“a”是0

word1[c]-“a”是指word1第cth位的字符与“a”的整数值之间的差值。基本上,它计算单词中字母出现的次数


所以,如果word1[c]是'b',那么word1[c]-'a'的值将是('b'-'a')=1。因此单词中出现“b”的次数将增加1。

word1[c]-“a”是指word1第cth位的字符与“a”的整数值之间的差值。基本上,它计算单词中字母出现的次数


所以,如果word1[c]是'b',那么word1[c]-'a'的值将是('b'-'a')=1。因此,单词中出现“b”的次数将增加1。

可能会帮助您更好地理解该表达式。请查看表中字母旁边标有
dec
的列。然后想想正在做的数学运算(在这个例子中是减法运算)。谢谢,对不起,我在问你之后就把我的评论删掉了。谢谢你的帮助!可能有助于您更好地理解该表达式。请查看表中字母旁边标有
dec
的列。然后想想正在做的数学运算(在这个例子中是减法运算)。谢谢,对不起,我在问你之后就把我的评论删掉了。谢谢你的帮助!您好,有关固定格式标记,请参阅我以前对此答案的编辑。您好,有关固定格式标记,请参阅我以前对此答案的编辑。感谢您的明确回答,作为后续问题,最好是让我的数组第一个字[]将初始大小设置为26,而不是我的最大单词大小(碰巧是30)?@JoshEngelsma除非ASCII中
'z'
后面的一些字符也被计算在内,否则我认为您是对的。感谢您的明确回答,作为后续问题,最好是让我的数组第一个单词[]将初始大小设置为26,而不是我的最大单词大小(碰巧是30?@JoshEngelsma),除非ASCII中
'z'
后面的一些字符也被计算在内,否则我认为你是对的。