这两个表达式等价吗?(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/07/05 14:57:46
![这两个表达式等价吗?(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);}](/uploads/image/z/9948833-17-3.jpg?t=%E8%BF%99%E4%B8%A4%E4%B8%AA%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%AD%89%E4%BB%B7%E5%90%97%3F%28int%29%2Aa%2A%28int+%2A%29a%E5%A6%82%E6%9E%9C%E7%AD%89%E4%BB%B7+%E8%BF%99%E4%B8%AA%E5%87%BD%E6%95%B0int+cmp_int+%28const+void+%2Aa%2Cconst+void+%2Ab%29+%7Breturn+%28%2A%28int+%2A%29a+-+%2A%28int+%2A%29b%29%3B%7D%E5%8F%AF%E4%B8%8D%E5%8F%AF%E4%BB%A5%E5%86%99%E6%88%90int+cmp_int+%28const+void+%2Aa%2Cconst+void+%2Ab%29+%7Breturn+%28%28int%29%2A0a+-+%28int%29%2Ab%29%3B%7D)
这两个表达式等价吗?(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赋值就行