为什么我们在这个C程序中使用了指针?

时间:2015-07-31 23:49:14

标签: c arrays pointers

为什么我们在这个C代码中使用了指针?基本上,我只是在数组中搜索一个字符串,但没有指针,它无法运行。但那为什么呢?

int main() {

    char *x[] = {"ab", "bc", "cd", 0};

    char *s = "ab";

    int i = 0;

    while(x[i]) {

            if(strcmp(x[i], s) == 0) {
                    printf("Gotcha!\n");
                    break;
            }

            i++;
    }
}

3 个答案:

答案 0 :(得分:3)

如果您正在尝试:

char x[] = ...

这是一组字符,只表示一个字符。指针允许数组中每个项目有多个字符。

指针在程序创建方式中是必需的,因为char数据类型不能指代所需的字符数量。纯C的下一个最佳数据类型是char *,它可以引用多个字符。

答案 1 :(得分:0)

字符串是一个非常复杂的问题引擎。 C决定忽略所有带有字符串的复杂性而不支持它们作为一种类型。对于单个字符,类型为char,字符串只是指向字符数组的第一个元素的指针。字符串的结尾由第一个'\0'字符(0字节)标记。

所以,简短的故事:你处理字符串,你需要指针(字符,即......)。

答案 2 :(得分:0)

您正在搜索字符串数组中的字符串。左1.因此,对于字符串s,我们使用指向字符串第一个字符的指针。如果需要,您可以表示使用数组,只需记住空终止。
2.对于字符串数组c,这里通过指向第一个字符串(char数组)的指针来实现。递增指针会检查所有字符串,直到最后一个字符串,它变为null。

如果需要,可以用2d数组替换它,但是你必须事先知道最大字符串大小,如果它变得太大则调整数组的大小。通常,char指针是处理c中字符串的最简单最痛苦的方法。