这两个表达式等价吗?(int)*a*(int *)a如果等价 这个函数int cmp_int (const void *a,const void *b) {return (*(int *)a - *(int *)b);}可不可以写成int cmp_int (const void *a,const void *b) {return ((int)*0a - (int)*b);}

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 16:01:45
这两个表达式等价吗?(int)*a*(int *)a如果等价 这个函数int cmp_int (const void *a,const void *b) {return (*(int *)a - *(int *)b);}可不可以写成int cmp_int (const void *a,const void *b) {return ((int)*0a - (int)*b);}

这两个表达式等价吗?(int)*a*(int *)a如果等价 这个函数int cmp_int (const void *a,const void *b) {return (*(int *)a - *(int *)b);}可不可以写成int cmp_int (const void *a,const void *b) {return ((int)*0a - (int)*b);}
这两个表达式等价吗?
(int)*a
*(int *)a
如果等价 这个函数
int cmp_int (const void *a,const void *b) {
return (*(int *)a - *(int *)b);
}
可不可以写成
int cmp_int (const void *a,const void *b) {
return ((int)*0a - (int)*b);
}

这两个表达式等价吗?(int)*a*(int *)a如果等价 这个函数int cmp_int (const void *a,const void *b) {return (*(int *)a - *(int *)b);}可不可以写成int cmp_int (const void *a,const void *b) {return ((int)*0a - (int)*b);}
不等价,含义不同.
(int)*a 是直接把指针a指向的地址里面内容取出来,再转换成int类型
*(int *)a 是把指针a转换int*类型的指针,再取其内容(int类型的)
如果a是char*或short*类型的,(int)*a 跟*(int *)a 结果是不一样的!
如果a是void*,*a的写法是错误的,因为void是无类型,因此无法判断*a的类型
a是const变量,也能直接(int)*a的,只要不对*a赋值就行