线性表遍历的问题

snfeng 2009-12-19 03:28:02
Status ListTraverse(SqList L,Void (*vi)(ElemType*))
{
ElemType *p;
int i;
p=L.elem;
for(i=1;i<=L.length);i++)
vi(p++);
printf("\n");
return OK;
}

上面指针函数里的参数ElemType* 是什么意思,变量后面加个*是什么意思?比如int *p好理解 ,定义个指针变量,而int* 是什么意思?谢谢
...全文
309 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
areegod 2009-12-20
  • 打赏
  • 举报
回复
Void (*vi)(ElemType*)
VOID型 的指针函数 带一个 ElemType 类型的指针 做参数
但是 VOID 型是不返回值的 那这个函数指针做参数能干什么了?
有人能解答下吗
dongdong814617937 2009-12-20
  • 打赏
  • 举报
回复
ElemType只是一个符号,是代表一个数据类型。在实际代码中是要替换成普通的数据类型的。这种运用方式在数据结构的课程中似乎是很常见的。
东大坡居士 2009-12-19
  • 打赏
  • 举报
回复
我看见MOON了~~
东大坡居士 2009-12-19
  • 打赏
  • 举报
回复
一般在函数声明的时候,可以省略函数参数变量,只给出函数参数的类型即可
qiuyatao 2009-12-19
  • 打赏
  • 举报
回复
你的函数是遍历吗?
snfeng 2009-12-19
  • 打赏
  • 举报
回复
呵呵 谢谢了 ,
highball 2009-12-19
  • 打赏
  • 举报
回复
我试了一下,可以这么用。但是没有必要这么写,呵呵。
snfeng 2009-12-19
  • 打赏
  • 举报
回复
(面色铁路桥) highball 两位谁说的对
highball 2009-12-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 snfeng 的回复:]
引用 2 楼 mstlq 的回复:
函数指针……
C/C++ code//比方说我定义一个(假设ElemType是int)void mvi(ElemType* e)
{
  printf(%d,*e);
};//那么我就可以这样调用ListTraverse函数ListTraverse(L,vi);//欲知详情,请楼主自行google函数指针,这里三言两语说不清

是不是可以写成这样
Status ListTraverse(SqList L,Void (*vi)(ElemType *P))
{

int i;
p=L.elem;
for(i=1;i <=L.length);i++)
vi(p++);
printf("\n");
return OK;
}


[/Quote]
不行。因为这个参数不是P,而是vi,vi是一个返回类型是void的函数指针,ElemType*只是表明,这个函数有一个类型是ElemType* 的参数。
mstlq 2009-12-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 snfeng 的回复:]
引用 2 楼 mstlq 的回复:
函数指针……
C/C++ code//比方说我定义一个(假设ElemType是int)void mvi(ElemType* e)
{
  printf(%d,*e);
};//那么我就可以这样调用ListTraverse函数ListTraverse(L,vi);//欲知详情,请楼主自行google函数指针,这里三言两语说不清

是不是可以写成这样
Status ListTraverse(SqList L,Void (*vi)(ElemType *P))
{

int i;
p=L.elem;
for(i=1;i <=L.length);i++)
vi(p++);
printf("\n");
return OK;
}


[/Quote]

snfeng 2009-12-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mstlq 的回复:]
函数指针……
C/C++ code//比方说我定义一个(假设ElemType是int)void mvi(ElemType* e)
{
printf(%d,*e);
};//那么我就可以这样调用ListTraverse函数ListTraverse(L,vi);//欲知详情,请楼主自行google函数指针,这里三言两语说不清
[/Quote]
是不是可以写成这样
Status ListTraverse(SqList L,Void (*vi)(ElemType *P))
{

int i;
p=L.elem;
for(i=1;i <=L.length);i++)
vi(p++);
printf("\n");
return OK;
}

welder1986 2009-12-19
  • 打赏
  • 举报
回复
ElemType* 表示函数的参数类型,是个指针类型
snfeng 2009-12-19
  • 打赏
  • 举报
回复
能不能讲详细点 谢谢
mstlq 2009-12-19
  • 打赏
  • 举报
回复
函数指针……
//比方说我定义一个(假设ElemType是int)
void mvi(ElemType* e)
{
printf(%d,*e);
};
//那么我就可以这样调用ListTraverse函数
ListTraverse(L,vi);
//欲知详情,请楼主自行google函数指针,这里三言两语说不清
highball 2009-12-19
  • 打赏
  • 举报
回复
指向ElemType的指针

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧