为什么我们在这个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++;
}
}
答案 0 :(得分:3)
如果您正在尝试:
char x[] = ...
这是一组字符,只表示一个字符。指针允许数组中每个项目有多个字符。
指针在程序创建方式中是必需的,因为char数据类型不能指代所需的字符数量。纯C的下一个最佳数据类型是char *,它可以引用多个字符。
答案 1 :(得分:0)
字符串是一个非常复杂的问题引擎。 C决定忽略所有带有字符串的复杂性而不支持它们作为一种类型。对于单个字符,类型为char
,字符串只是指向字符数组的第一个元素的指针。字符串的结尾由第一个'\0'
字符(0字节)标记。
所以,简短的故事:你处理字符串,你需要指针(字符,即......)。
答案 2 :(得分:0)
您正在搜索字符串数组中的字符串。左1.因此,对于字符串s,我们使用指向字符串第一个字符的指针。如果需要,您可以表示使用数组,只需记住空终止。
2.对于字符串数组c,这里通过指向第一个字符串(char数组)的指针来实现。递增指针会检查所有字符串,直到最后一个字符串,它变为null。
如果需要,可以用2d数组替换它,但是你必须事先知道最大字符串大小,如果它变得太大则调整数组的大小。通常,char指针是处理c中字符串的最简单最痛苦的方法。