所以我试图对一组指针进行排序,如下所示。我遇到的问题是数组包含一个空元素。我必须取消引用除 NULL 以外的所有元素,否则我当然会收到错误,但这会导致我的排序在 NULL 出现后无法正确排序任何元素。我可以为 NULL 情况创建一个特定的异常,但是有没有办法避免这种情况,并且在我仍然取消引用其他所有内容的同时将 NULL 处理为 0?现在我告诉排序忽略NULL。这只是一个占位符,因为我无法找到解决问题的方法。
#include <stdio.h>
#include <stdlib.h>
void arr(int ar[], int ele);
int main(){
int a=0, b=9, x=3, p=2, *ar[]={&a, &b, &x, NULL, &p}, i=0, ele=(sizeof(ar)/sizeof(ar[0]));
arr(ar, ele);
printf("\n\n");
for(;i<ele;i++){
if(ar[i]==NULL){
printf("");
}else{
printf("%i", *ar[i]);
}
}
}
void arr(int *ar[], int ele){
int i=ele-1, c=0;
for(;i>0; i--){
for(;c<i; c++){
if((ar[c]!=NULL && ar[c+1]!=NULL) && *ar[c]>*ar[c+1]){
int t=*ar[c+1];
*ar[c+1]=*ar[c];
*ar[c]=t;
}
}
}
}