在函数中使用 printf returns void
using printf in a function returns void
当我 运行 这段代码时,我收到一条错误消息 "parameter name omitted",我怀疑这是因为我正在使用 printf,其中 returns int type inside a void return 函数。
*注意:我写这段代码是为了检查指针是否会成功更改全局变量的值?
#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);
}
这不是 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();
}
编译器似乎将警告视为错误。实际上这个函数定义
void call(int)
{
printf("%d\n",a);
}
有效。然而,编译器会警告您虽然函数是用参数调用的,但参数名称被省略了。
确实函数没有使用它的参数。所以你可以像这样定义它(C 中的一个更好的定义)
void call( void )
{
printf("%d\n",a);
}
或者像这样
void call()
{
printf("%d\n",a);
}
在这种情况下,您必须像
那样调用函数
call();
并且该函数将依赖于全局变量a
。
考虑到如果你像这样交换函数定义和全局变量的定义
void call( void )
{
printf("%d\n",a);
}
int a = 5 ;
那么代码将无法编译。
所以如果函数不处理全局变量会更好。所以最好将函数定义为
void call( int a )
{
printf("%d\n",a);
}
并称其为
call(a);
当我 运行 这段代码时,我收到一条错误消息 "parameter name omitted",我怀疑这是因为我正在使用 printf,其中 returns int type inside a void return 函数。
*注意:我写这段代码是为了检查指针是否会成功更改全局变量的值?
#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);
}
这不是 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();
}
编译器似乎将警告视为错误。实际上这个函数定义
void call(int)
{
printf("%d\n",a);
}
有效。然而,编译器会警告您虽然函数是用参数调用的,但参数名称被省略了。
确实函数没有使用它的参数。所以你可以像这样定义它(C 中的一个更好的定义)
void call( void )
{
printf("%d\n",a);
}
或者像这样
void call()
{
printf("%d\n",a);
}
在这种情况下,您必须像
那样调用函数call();
并且该函数将依赖于全局变量a
。
考虑到如果你像这样交换函数定义和全局变量的定义
void call( void )
{
printf("%d\n",a);
}
int a = 5 ;
那么代码将无法编译。
所以如果函数不处理全局变量会更好。所以最好将函数定义为
void call( int a )
{
printf("%d\n",a);
}
并称其为
call(a);