此处,如果没有加 typedef ,可以用struct arr_tag来定义变量 ,arr称为“tag”,即“标签”,实际上是一个临时名字,struct 关键字和arr_tag一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。
但是如果加上了typedef,
typedef struct arr{
int val;
int pos;
};
int cmp(const void * a, const void * b)
{
if((* (arr * )a).val != ( * (arr * )b).val)
return ( * (arr * )a).val > ( * (arr * )b).val ? 1 : -1;
else return (* (arr * )a).pos -( * (arr * )b).pos;
}
bool containsNearbyDuplicate(int* nums, int numsSize, int k){
arr *s;
s=(arr*)malloc(sizeof(arr)*numsSize);
int i;
for(i=0;i<numsSize;i++) s[i].val=nums[i],s[i].pos=i;
qsort(s,numsSize,sizeof(arr),cmp);
for(i=0;i<numsSize-1;i++){
if(s[i].val==s[i+1].val&&abs(s[i].pos-s[i+1].pos)<=k) return 1;
}
return 0;
}