使用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
如何打印正确的值?
答案 0 :(得分:2)
当您致电print(*bits)
时,您将bits[0]
作为参数,即char*
。然后你告诉printf
输出一个字符串(在C中为char*
),你给它bits[1]
实际上是char
类型,特别是第二个char
在bits
中。 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。