我不知道如果填写句子“如果传递了initial_value”。 我必须使用变量参数吗?它对我来说不太可读,所以我找到了其他方法。
请帮帮我..
int *func (int initial_value) {
int *number;
number = malloc(sizeof(int));
if ("if initial_value is passed") *number = initial_value;
else scanf("%d", &number);
return number;
}
答案 0 :(得分:5)
在C(和C ++)中调用没有参数的函数将导致编译时错误。因此,如果没有参数,则无法调用该函数。
我认为您正在寻找的是default arguments,这是一个C ++功能。它在正常的C中不可用。
通过指针可以实现在C中实现类似功能的方法:
int * func (int * initial_value) {
int x;
if( initial_value == NULL ) {
x = 5;
} else {
x = *initial_value;
}
//...more code and return
}
//when you call it use:
func( NULL ); // x = 5
int arg = 7;
func( &arg ); // x = 7
旁注:
scanf("%d", &number); -> scanf("%d", number); //because number already is a pointer