C 在函数中使用printf返回void
当我运行这段代码时,我得到一个错误,上面写着“parametername省略”,我怀疑这是因为我使用的printf在void返回函数中返回int-type *注意:我写这段代码是为了检查指针是否会成功更改全局变量的值C 在函数中使用printf返回void,c,function,declaration,definition,C,Function,Declaration,Definition,当我运行这段代码时,我得到一个错误,上面写着“parametername省略”,我怀疑这是因为我使用的printf在void返回函数中返回int-type *注意:我写这段代码是为了检查指针是否会成功更改全局变量的值 #include <stdio.h> int a = 5 ; void call(int) { printf("%d\n",a); } int main() { int* p = &a; call(a); *p = 6
#include <stdio.h>
int a = 5 ;
void call(int)
{
printf("%d\n",a);
}
int main()
{
int* p = &a;
call(a);
*p = 6 ;
printf("%d\n",a);
printf("%d\n",*p);
call(a);
}
#包括
INTA=5;
无效呼叫(int)
{
printf(“%d\n”,a);
}
int main()
{
int*p=&a;
电话(a);
*p=6;
printf(“%d\n”,a);
printf(“%d\n”,*p);
电话(a);
}
这不是printf,而是您调用“call”的方式
如果您不需要在调用中使用参数,则应该
#include <stdio.h>
int a = 5 ;
void call()
{
printf("%d\n",a);
}
int main()
{
int* p = &a;
call();
*p = 6 ;
printf("%d\n",a);
printf("%d\n",*p);
call();
}
#包括
INTA=5;
无效调用()
{
printf(“%d\n”,a);
}
int main()
{
int*p=&a;
call();
*p=6;
printf(“%d\n”,a);
printf(“%d\n”,*p);
call();
}
编译器似乎考虑了错误之类的警告。实际上这个函数定义
void call(int)
{
printf("%d\n",a);
}
这是有效的。但是,编译器警告您,尽管使用参数调用函数,但忽略了参数名
实际上,该函数不使用其参数。所以您可以这样定义它(在C中是一个更好的定义)
还是像这样
void call()
{
printf("%d\n",a);
}
void call( void )
{
printf("%d\n",a);
}
int a = 5 ;
在这种情况下,必须调用如下函数
call();
void call( int a )
{
printf("%d\n",a);
}
函数将依赖全局变量a
考虑到如果你像这样交换函数定义和全局变量的定义
void call()
{
printf("%d\n",a);
}
void call( void )
{
printf("%d\n",a);
}
int a = 5 ;
那么代码将不会编译
因此,如果函数不处理全局变量就更好了。因此,最好将函数定义为
call();
void call( int a )
{
printf("%d\n",a);
}
就这样说吧
call(a);
void call(int a){…}为什么要使用全局变量?正如在文章中所说,指针是否会成功地改变全局变量的值?我很有信心你的C语言书展示了函数是如何定义的…如果你打算使用参数,它应该是
void call(int a)
。