函数的类型是空指针,有什么作用?void *initiate(...)这样的函数
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/05 04:21:45
函数的类型是空指针,有什么作用?void *initiate(...)这样的函数
void函数直接用就行了啊,写个void initiate(...)就行了吧
为什么要写成void *initiate(..)呢?有什么区别吗?
void函数直接用就行了啊,写个void initiate(...)就行了吧
为什么要写成void *initiate(..)呢?有什么区别吗?
其本质在于void *(无类型指针)可以包容任何类型的指针,也就是可以把任何类型指针赋值给void ×,但反过来将void ×赋值给某一类型指针时则必须强制类型转换.
举例说明:
我们知道C语言中函数返回值得类型必须确定,也就是一个函数只能返回其固定类型的值,那么如果需要根据不同输入值返回不同类型的结果怎么办?这样就可以:
定义一个结构体,两个字段,data为数据,type为类型
typedef struct _Data
{
void *data; // 数据字段,指向具体创建的控件的数据
TYPE type; // 类型(只读属性,开发人员请勿直接修改)
}Data;
那么函数就可以这样写:
Data getData(TYPE type){
Data data;
if(type == "数字"){
data.type = "数字";
data.data = maollc一段内存,里面放具体数字
}else if(type == "字符串"){
data.type = "字符串"
data.data = maollc一段内存,里面放具体字符串
}
return data;
}
这样用时就很方便了,
Data myData = getData("数字");
printf("%d",*((int *)myData.data));
Data myData = getData("字符串");
printf("%s",(char *)myData.data);
不仅统一了接口(都调用getData()函数),返回值也可以随便作为参数传递,只有要用到具体数据的时候再将它取出来.
不仅可以实现多态,还可以实现继承...
再问: 理解了!谢谢 但是为啥在主函数中用它的时候,就把它当void用了呢?没有用到它的 返回值(即 空类型的指针) 函数是这样写的 void *initiate(slnode **h) { *h=(slnode*)malloc(sizeof(slnode)); (*h)->next=null; } 后面主函数用它的时候是: initiate(&p);
再答: 在一个函数中,可以使用此函数的返回值,也可不使用,比如众所周知的printf函数中,他也有函数值,但是我们可以不用,对于nitiate函数也是一样的。明白吗?望采纳!
举例说明:
我们知道C语言中函数返回值得类型必须确定,也就是一个函数只能返回其固定类型的值,那么如果需要根据不同输入值返回不同类型的结果怎么办?这样就可以:
定义一个结构体,两个字段,data为数据,type为类型
typedef struct _Data
{
void *data; // 数据字段,指向具体创建的控件的数据
TYPE type; // 类型(只读属性,开发人员请勿直接修改)
}Data;
那么函数就可以这样写:
Data getData(TYPE type){
Data data;
if(type == "数字"){
data.type = "数字";
data.data = maollc一段内存,里面放具体数字
}else if(type == "字符串"){
data.type = "字符串"
data.data = maollc一段内存,里面放具体字符串
}
return data;
}
这样用时就很方便了,
Data myData = getData("数字");
printf("%d",*((int *)myData.data));
Data myData = getData("字符串");
printf("%s",(char *)myData.data);
不仅统一了接口(都调用getData()函数),返回值也可以随便作为参数传递,只有要用到具体数据的时候再将它取出来.
不仅可以实现多态,还可以实现继承...
再问: 理解了!谢谢 但是为啥在主函数中用它的时候,就把它当void用了呢?没有用到它的 返回值(即 空类型的指针) 函数是这样写的 void *initiate(slnode **h) { *h=(slnode*)malloc(sizeof(slnode)); (*h)->next=null; } 后面主函数用它的时候是: initiate(&p);
再答: 在一个函数中,可以使用此函数的返回值,也可不使用,比如众所周知的printf函数中,他也有函数值,但是我们可以不用,对于nitiate函数也是一样的。明白吗?望采纳!
函数的类型是空指针,有什么作用?void *initiate(...)这样的函数
在C语言中函数类型的指针有什么作用
急.请问一下,指向函数的指针有什么特殊的作用吗?为什么要有指向函数的指针呢?
假设有个函数是这样声明:void &hanshu(int,int ); 我看到的函数大多数都是引用参数.
编写一个函数 void sortLine(char*line[],int n); 参数line是一个指向串的指针数组,它
参数是变量,指针的函数调用 void fun(int a,int*b);在函数中对a,b进行修改,返回后观察其结果
定义一个返回值是指向函数的指针且有一个指向函数的指针作为参数的函数?
已知函数test定义为:void test() { ………… } 则函数定义中void的含义是( ) A.执行函数tes
指向void类型的指针可以存放指向任何类型的指针,但不能引用其自身是什么意思
编写用指针变量作为函数参数求数组的最小值、最大值和平均值的函数(下面是我编的,请问有什么问题)
android中的context函数是起什么作用的?为什么在每次遇到contex()函数的时候都可以用this这个指针代
求解释c语言函数指针的作用