#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char *func(int *cp(void* , void*), void *data1, void *data2){
(*cp)(data1,data2);
}
int *cmp(void* dest, void* src) //这个函数的目的是 将src里的数值,给dest,本函数有问题,高人可直接给出正确的
{
int num1,num2;
num1 = (int)dest; //调试时这里的地址跟main里的一样,数值无法打印,打印的是一个长串负值
num2 = (int)src;
num1=num2;
dest=(void*)num1;
return (void*)0;
}
int main(void)
{
int ret;
int num1=7;
int num2=4;
// printf("main:%d,%p\n",&num1,&num1);
// printf("main:%d,%p\n",&num2,&num2);
ret= (int)(*func)( cp , &num1, &num2);
printf("%d\n",num1);//我的目的是num1是4,但打印的是7,上面的函数调用没有起到明显的效果
return ;
}
#include <stdio.h>
#include <string.h>
char *func(int *cp(void* , void*), void *data1, void *data2){
(*cp)(data1,data2);
return NULL;
}
int *cmp(void* dest, void* src) //这个函数的目的是 将src里的数值,给dest,本函数有问题,高人可直接给出正确的
{
*(int*)dest = *(int*)src; //调试时这里的地址跟main里的一样,数值无法打印,打印的是一个长串负值
return (int*)0;
}
int main(void)
{
int ret;
int num1=7;
int num2=4;
// printf("main:%d,%p\n",&num1,&num1);
// printf("main:%d,%p\n",&num2,&num2);
ret= (int)(*func)( cmp , &num1, &num2);
printf("%d\n",num1);//我的目的是num1是4,但打印的是7,上面的函数调用没有起到明显的效果
return 0;
}
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int func(int (*cp)(void* , void*), void *data1, void *data2)
{
return (*cp)(data1,data2);
}
int cmp(void* dest, void* src)
{
*((int*)dest) = *((int*)src);//这样强制类型其实转换不太好
return 0;
}
int main(void)
{
int ret;
int num1=7;
int num2=4;
ret= func(cmp , &num1, &num2);
printf("%d\n",num1);
return 0;
}
int cp(void* dest, void* src)
{
*(int*)dest = *(int*)src; //这里,是将src指向的地址上的值赋值给dest指向的地址。因为传递过来的是一个地址,指针指向的是num1.num2的地址,故,修改指针指向的地址上的值,就是修改num的值
return 0;
}
ret= func( cp , &num1, &num2); //传地址过去
char *func(int *cmp(void* , void*), void *data1, void *data2){
(*cmp)(data1,data2);
}
int *cmp(void* dest, void* src)
{
int num1,num2;
num1 = (int)dest;
num2 = (int)src;
num1=num2;
printf("cmp:%p\n",num1);
printf("cmp:%p\n",dest);
printf("cmp:%d\n",(int)(dest));
dest=(void*)num1;
return (void*)0;
}
int main(void)
{
int ret;
int num1=7;
int num2=4;
printf("main:%d,%p\n",&num1,&num1);
printf("main:%d,%p\n",&num2,&num2);
ret= (int)(*func)( cmp , &num1, &num2);
printf("%d\n",num1);
return ;
}
*(int*)dest = *(int*)src;对于这行代码
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。