如何在不知道大小的情况下循环通过双指针.(C)



如何在不知道双指针大小的情况下循环使用它。

char *arr[] = {"ant", "bat", "cat", "dog", "egg", "fly"}; 
char **ptr = arr; // Double pointer 

我试过了,但我得到了一个错误

while (*ptr){
printf("%sn",*ptr);
ptr+=1;
}

我不想做类似的事情,但有双指针。

char *word = *ptr;
for (int i = 0; *(word + i) != ''; i++)
{
printf("%c", *(word + i));
}

之所以可以用确定字符串的末尾,是因为当您为指针分配一个时,一个空字节会自动放在末尾,请注意,字符串的定义是一个以空结尾的字符数组。您可以在字符串数组中模拟这种行为,方法是在末尾添加一个NULL元素:

char *arr[] = {"ant", "bat", "cat", "dog", "egg", "fly", NULL};
char **ptr = arr;  // Double pointer
while (*ptr) {
printf("%sn", *ptr);
ptr += 1;
}

这就是所谓的哨兵。

最新更新