试图分配函数指针 [英] trying to assign function pointers

查看:59
本文介绍了试图分配函数指针的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨我在分配函数指针时遇到了一些问题。


这样可以正常工作:

int(* compar)()=增加;

qsort(arr,MAX,sizeof(arr [0]),比较);


这不是:

if( argv [1] =="减少")

int(* compar)()=减少;

if(argv [1] ==" increase")

int(* compar)()=增加;

qsort(arr,MAX,sizeof(arr [0]),比较);

这里的任何想法都是下面的完整代码


#include< stdio.h>

#include< stdlib.h>


#define MAX 20

int intcmp(const void * v1,const void * v2);

int增加(const void * v1,const void * v2);

int减少(const void * v1,const void * v2);

int(* compar)(const void * v1,const void * v2);

main(int argc,char ** argv)

{

int arr [MAX] ,count,key,* ptr,i,a,b;


printf(& ; argc =%d \ n,argc);


for(i = 0;我< ARGC; i ++)

printf(" argv [%d] = \"%s \" \ n",i,argv [i]);

int(* compar)()=增加;


// if(argv [1] =="减少")

// int( * compar)()=增加;

// if(argv [1] ==" increase")

// int(* compar)()=减少;


for(count = 0; count< MAX; count ++)

scanf("%d",& arr [count]);

qsort(arr,MAX,sizeof(arr [0]),比较);

// qsort(arr,MAX,sizeof(arr [0]),增加);


for(count = 0; count< MAX; count ++)

printf(" arr [%d] =%d。\ n",count,arr [count]);


}

int intcmp(const void * v1,const void * v2)

{

return(*(int *)v1 - *(int *)v2);

}


int increase(const void * v1,const void * v2)

{

// printf(" increase\\\
");

return(*(int *)v1 - *(in t *)v2);

}


int减少(const void * v1,const void * v2)

{

// printf(" decrease\\\
");

return(*(int *)v2 - *(int *)v1);

}

Hi I am having some problems assigning function pointers.

this works fine:
int (*compar) () = increasing;
qsort(arr, MAX, sizeof(arr[0]), compar);

this doesn''t:
if (argv[1] == "decreasing")
int (*compar) () = decreasing;
if (argv[1] == "increasing")
int (*compar) () = increasing;
qsort(arr, MAX, sizeof(arr[0]), compar);

any ideas here is the full code below

#include <stdio.h>
#include <stdlib.h>

#define MAX 20

int intcmp(const void *v1, const void *v2);
int increasing(const void *v1, const void *v2);
int decreasing(const void *v1, const void *v2);
int (*compar)(const void *v1, const void *v2);
main(int argc, char** argv)
{
int arr[MAX], count, key, *ptr, i, a ,b;

printf("argc = %d\n", argc);

for (i = 0; i < argc; i++)
printf("argv[%d] = \"%s\"\n", i, argv[i]);
int (*compar) () = increasing;

//if (argv[1] == "decreasing")
//int (*compar) () = increasing;
//if (argv[1] == "increasing")
//int (*compar) () = decreasing;

for (count = 0; count < MAX; count++)
scanf("%d", &arr[count]);
qsort(arr, MAX, sizeof(arr[0]), compar);
//qsort(arr, MAX, sizeof(arr[0]), increasing);

for (count = 0; count < MAX; count++)
printf("arr[%d] = %d.\n", count, arr[count]);

}
int intcmp(const void *v1, const void *v2)
{
return (*(int *)v1 - *(int *)v2);
}

int increasing(const void *v1, const void *v2)
{
// printf ("increasing\n");
return (*(int *)v1 - *(int *)v2);
}

int decreasing(const void *v1, const void *v2)
{
// printf ("decreasing\n");
return (*(int *)v2 - *(int *)v1);
}

推荐答案

merrittr写道:
merrittr wrote:

嗨我我在分配函数指针时遇到了一些问题。


这很好用:

int(* compar)()=增加;

qsort(arr,MAX,sizeof(arr [0]),比较);


这不是:

if(argv [1] = =减少)

int(* compar)()=减少;

if(argv [1] ==" increase")

int(* compar)()=增加;

qsort(arr,MAX,sizeof(arr [0]),比较);
Hi I am having some problems assigning function pointers.

this works fine:
int (*compar) () = increasing;
qsort(arr, MAX, sizeof(arr[0]), compar);

this doesn''t:
if (argv[1] == "decreasing")
int (*compar) () = decreasing;
if (argv[1] == "increasing")
int (*compar) () = increasing;
qsort(arr, MAX, sizeof(arr[0]), compar);



你不能两次宣布比较,试试


int(* compar)();


if(argv [ 1] ==减少)

compar =减少ing;

if(argv [1] ==" increase")

compar =增加;


qsort(arr ,MAX,sizeof(arr [0]),比较);


-

Ian Collins。

You can''t declare compar twice, try

int (*compar)();

if (argv[1] == "decreasing")
compar = decreasing;
if (argv[1] == "increasing")
compar = increasing;

qsort(arr, MAX, sizeof(arr[0]), compar);

--
Ian Collins.

Ian Collins说:
Ian Collins said:

merrittr写道:
merrittr wrote:

>嗨我有一些分配函数指针的问题。

这很好用:
int(* compar)()=增加;
qsort(arr,MAX,sizeof(arr [0]),比较);

这不是:
if(argv [1] =="减少")
int(* compar)()=减少;
if(argv [1] ==" increase")
int(* compar)()=增加;
qsort(arr,MAX,sizeof(arr [0]),compar);
>Hi I am having some problems assigning function pointers.

this works fine:
int (*compar) () = increasing;
qsort(arr, MAX, sizeof(arr[0]), compar);

this doesn''t:
if (argv[1] == "decreasing")
int (*compar) () = decreasing;
if (argv[1] == "increasing")
int (*compar) () = increasing;
qsort(arr, MAX, sizeof(arr[0]), compar);



你不能两次声明比较

You can''t declare compar twice



是的,他可以,但它不会做任何好事。


,试试

Yes, he can, but it won''t do him any good.

, try


>

int(* compar)();
>
int (*compar)();



使用

int(* compar)(const void *,const void *)不会更好吗? ?

Wouldn''t he be better off with
int (*compar)(const void *, const void *); ?


>

if(argv [1] =="减少")

compar =减少;

if(argv [1] ==" increase")

compar = increase;
>
if (argv[1] == "decreasing")
compar = decreasing;
if (argv[1] == "increasing")
compar = increasing;



查找strcmp他不是更好吗?


-

Richard Heathfield

Usenet是一个奇怪的地方 - dmr 29/7/1999
http://www.cpax.org.uk

电子邮件:rjh在上述域名中, - www。

Wouldn''t he be better off looking up strcmp?

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at the above domain, - www.


Richard Heathfield写道:
Richard Heathfield wrote:

Ian Collins说:
Ian Collins said:

> merrittr写道:
>merrittr wrote:

> ;>嗨我在分配函数指针时遇到了一些问题。

这很好用:
int(* compar)()=增加;
qsort(arr,MAX,sizeof (arr [0]),比较);

这不是:
if(argv [1] =="减少")
int(* compar) ()=减少;
if(argv [1] ==" increase")
int(* compar)()=增加;
qsort(arr,MAX,sizeof(arr [ 0]),比较);
>>Hi I am having some problems assigning function pointers.

this works fine:
int (*compar) () = increasing;
qsort(arr, MAX, sizeof(arr[0]), compar);

this doesn''t:
if (argv[1] == "decreasing")
int (*compar) () = decreasing;
if (argv[1] == "increasing")
int (*compar) () = increasing;
qsort(arr, MAX, sizeof(arr[0]), compar);


你不能两次声明比较

You can''t declare compar twice



是的,他可以,但它他不会对他好。


Yes, he can, but it won''t do him any good.



不是他在相同范围内的方式。

Not the way he did in the same scope.


,尝试
, try

> int(* compar )();
>int (*compar)();



使用

int(* compar)(const void *,const void *)不会更好吗? ?


Wouldn''t he be better off with
int (*compar)(const void *, const void *); ?



他会。

He would.


> if(argv [ 1] ==减少)
比较=减少;
如果(argv [1] ==增加)
比较=增加;
>if (argv[1] == "decreasing")
compar = decreasing;
if (argv[1] == "increasing")
compar = increasing;



查找strcmp他不是更好吗?


Wouldn''t he be better off looking up strcmp?



看一下写的时候会发生什么C ++整天?


-

Ian Collins。

See what happens when one writes C++ all day?

--
Ian Collins.


这篇关于试图分配函数指针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆