C char数组打印,使用子程序

时间:2015-09-19 15:05:16

标签: c arrays char subroutine

使用c:

代码
const char *bits[] = {"0000","0001","0010"};

当我调用printf-function时,它工作正常:

prinft("%s",bits[1]); // this prints correct value

但是当我尝试调用子程序函数时,它会停止程序:

print(*bits);
void print(const char *bits)
prinft("%s",bits[1]); // system stops working

如何打印正确的值?

2 个答案:

答案 0 :(得分:2)

当您致电print(*bits)时,您将bits[0]作为参数,即char*。然后你告诉printf输出一个字符串(在C中为char*),你给它bits[1]实际上是char类型,特别是第二个charbits中。 printf会将此值视为char*,这自然会导致问题。

答案 1 :(得分:1)

起初,我是一名中国学生。所以我的英文写作可能并不好。

我认为您的代码中存在一些错误。 你应该理解指针(例如:int * ptr或int ptr [])并且指针指向一个指针(例如:int ** ptr或int * ptr [])。在你的代码中,bits是指向指针的指针,因为你同时使用了*和[]。 因此,如果要将位传输到print()函数,则应使用

void print(const char **bits){
    printf("%s\n", bits[0]);
}

或者您可以按如下方式编写print():

void print(const char *bits){
    printf("%s\n", bits);
}

//in main()
print(bits[0]);

这取决于你要做什么print()。

ps:这是我在Stack Overflow上的第一个答案。如果你发现一些英语语法错误,请告诉我.Thx。