C - while(* Table [i])的意思/做什么?

时间:2015-10-22 22:48:09

标签: c arrays string while-loop

我需要在数组中添加一个字符串,需要一些帮助来弄清楚这意味着什么。这就是我所拥有的:

#include <stdio.h>
#include <stdlib.h>
int insert(char *word, char *Table[], int n)
{
//*word is the string to be added, *Table[] is the array, n is
//the return value, which is the number of words in the array after adding *word
    int i = 0;
    while(*Table[i])
    {
        if strcmp(*Table[i], *word) == 0)
        {
            return n;
            break;
        }
    }
}

我前一段时间写过这篇文章,现在才重新审视它。我不知道* Table [i]的意思是什么,因此我不知道后面的代码意味着什么。此外,此代码不完整,所以不要告诉我它不会添加字符串。

1 个答案:

答案 0 :(得分:1)

*运算符取消引用指针,[i]。

也取消引用

由于Table声明为char * Table [],因此它与char **相同​​,因为它是指向指针类型的指针(如2维数组)。

在这种情况下,从使用中可以明显看出Table是一个字符串数组(一个字符串是一个char数组(因此是数组类型的数组))。

因此Table [i]是指向字符串数组中第i个字符串的指针,然后*再次取消引用它。作者在这里做的是寻找一个跟随字符串数组的NULL(零),这显然是确定数组结束的方法。