*(int* 变量名)得出的值是变量的值吗?如果是,为什么?先谢谢高手们
我表达得不清楚,用另一种形式表达一下:
int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
*(int *)a的值是从哪来的
对qsort函数中的void指针的疑惑,求解
答案:3 悬赏:10 手机版
解决时间 2021-02-07 18:22
- 提问者网友:听门外雪花风
- 2021-02-06 23:36
最佳答案
- 五星知识达人网友:毛毛
- 2021-02-07 00:22
兄弟这是强制类型转换,这里的void型指针其实和c++多态时用到的基类指针类似。
(int*)a是把void*类型的指针强制转换成int*类型 ,左边的*是取内容的意思。应该明白了吧?
这是一个通用函数,传入的参数可以是 int* 也可以是char* 等等。。。
(int*)a是把void*类型的指针强制转换成int*类型 ,左边的*是取内容的意思。应该明白了吧?
这是一个通用函数,传入的参数可以是 int* 也可以是char* 等等。。。
全部回答
- 1楼网友:你可爱的野爹
- 2021-02-07 02:19
a是一个void *指针。
如果取它指向的内存的值。必须把它cast到一个特定类型上。
比如 (int*)a
cast之后的指针就是一个标准的int *了,所以就可以再取它所在内存地址的值了。
- 2楼网友:狂恋
- 2021-02-07 00:59
*(int *)a 这条表达式的意思是将a强制转换为int *(整形指针)类型,然后返回*a(也就是返回a执向的内容), 你题目那种写法是不对的,因为(int * 变量名)是对变量的声明
再看看别人怎么说的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯