C99
我正在使用指针指针并将其传递给函数以显示名称.
但是,当我通过调试器.指向参数中指针的指针指向任何内容.但是,我用它来显示main中的所有名称.
如果我传递一个整数,整数值仍然存在.为什么不指向指针?
这是否与范围有关或者我是否需要使用malloc或calloc为指针指针分配内存?
非常感谢任何建议,
#include <stdio.h>
void display_names(char **first_names);
int main(void)
{
char *names[] = {"peter", "Mary", "John", 0};
char **print_names = names;
while(*print_names)
{
printf("Name: %s\n", *print_names);
*print_names++;
}
display_names(print_names);
getchar();
return 0;
}
void display_names(char **first_names)
{
while(*first_names)
{
printf("First name: %s\n", *first_names);
first_names++;
}
}
Run Code Online (Sandbox Code Playgroud)
在while循环中,循环直到print_names指向任何内容,然后将其传递给display_names.此时,*print_names == 0.而不是while循环,尝试:
char **print_names = names;
while(*print_names)
{
printf("Name: %s\n", *print_names);
*print_names++;
}
print_names = names;
display_names(print_names);
Run Code Online (Sandbox Code Playgroud)
这应该打印两次名称 - 一次来自while循环,一次来自函数调用.