我知道有两种类型的函数:void和返回某些函数的函数(int,double等).但是如果在没有任何return语句的情况下声明函数怎么办?它被认为是一种void功能吗?例如,
myFunction(int value){
.......
}
Run Code Online (Sandbox Code Playgroud) 有人可以向我解释为什么以下编译:
int main()
{
int a = mymethod(0);
}
int mymethod(int b)
{
return b;
}
Run Code Online (Sandbox Code Playgroud)
但这不会:
int main()
{
mymethod(0);
}
void mymethod(int b)
{
return;
}
Run Code Online (Sandbox Code Playgroud)
我认为在 C/C++ 中需要前向声明,但这里有一个反例。隐式声明如何在 C 中工作?
int main ()
{
hello();
return 0;
}
int hello()
{
printf("\n hello world");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
根据C规则,下面定义的每个函数main()必须在上面声明,main() 但为什么它int作为返回类型的函数的异常?如果你将返回类型hello() 改为其他任何东西(void,char*等),它将抛出错误声明.为什么int 返回类型没有错误或警告?
char** strsep(const char* str)
{
char** returnStrings = NULL;
for (int i = 0; i < strlen(str); i++)
{
if (str[i] == ' ') returnStrings[sizeof(returnStrings)/sizeof(returnStrings[0])] = "";
else returnStrings[sizeof(returnStrings)/sizeof(returnStrings[0])] += str[i];
}
return returnStrings;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试制作一个可以将句子(字符串)拆分为单词数组(也是字符串)的函数,但它不会编译并显示error: implicitly declaring library function 'strlen' with type 'unsigned long (const char *)' [-Werror,-Wimplicit-function-declaration]. 它说我正在输入一个 unsigned long 作为 strlen() 的参数,但我不是。我有#include <stdio.h>我的代码。
对于我的考试,我必须解释void *C和C ++中通用指针()的区别。它们是两件事,但是我找不到它们之间的区别。