问一个c语言的void使用的问题?

2025-03-25 16:57:32
推荐回答(6个)
回答1:

c语言不允许其参数类型是 void,void代表没有参数。
int foo(void a){return a}; 这样的函数是错误的, 形参不能是void类型。另外你的程序还有其他错误:

#include
void g(int a1, char b) // a1后面的逗号换成英文的,半角的
{
a1=3;
b='a';
}
char *g1(char p1)
{
char *str1="aaa",*str2="bbb"; // 单引号变双引号, 别忘了后面的分号

if(p1==0)
return str1;
else
return str2;
}
void main()
{
void (*fun_pointer)(int p0, char p1); // 函数指针的类型要和它指向的函数的类型一致
char *(*fun_pointer2)(char p2);

fun_pointer=g;
fun_pointer2=g1;

(*fun_pointer)(3,3); // fun_pointer 是指向函数g的指针, *fun_pointer才是函数
(*fun_pointer2)(2);
}

回答2:

指向函数的指针就不说了
char *g1(char p1)
{
char *str1='aaa',*str2='bbb'
if(p1==0)
return str1;
else
return str2;
}
这个函数就不对,*str2是在子函数定义的,子函数结束的时候会析构,所以你return的str2是个野指针

回答3:

指向函数的指针定义错误,必须和函数的定义类型一样,包括函数的参数类型,返回值类型和参数个数 ,改成这样void (*fun_pointer)(int p0,char p1);
char (*fun_pointer2)(char p2);

回答4:

void g(int a1,char b)
char *g1(char p1)
void (*fun_pointer)(void *p0,void p1);
void (*fun_pointer2)(void *p2);

其实没明白你的意思,想用函数指针的话 应该这么定义
void (*fun_pointer)(int a1,char b);
char * (*fun_pointer2)(char p1);

回答5:

看不懂 第一个函数怎么会在函数体给char类型的形参赋值?

回答6:

看来要打酱油了~