指针将与任何指针变量一起使用时为C

问题描述

我了解通常的while (*pointer)用例是在使用字符串时。

char str[]= "string";
int i = 0;
while (*(str + i++));

当取消引用的字符为\0时,循环结束。

但是,我有这段代码可以递归打印出字符串数组。

void print_array(char** arr,bool printComma) {
    if (*arr) {
        if (printComma) {
            printf(",");
        }
        printf("%s",*arr);
        print_array(arr + 1,true);
    }
}

int main(int argc,char **argv) {
    print_array(argv,false);
}

它按预期工作,并打印出char **arr内部的字符串。

但是,我不了解系统如何知道数组的末尾,因为取消引用指针的指针会提供指向内存的值,我不确定该值也是什么。

此外,如果我将此样式与任何指针变量一起使用,循环是否一定会结束?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)