分配不兼容的指针类型(警告)

assignment incompatible pointer type (WARNING)

问题是每次我尝试提交此代码时都会显示此消息:

assignment from incompatible pointer type [enabled by default]

警告是由aux=q引起的; 我应该如何使它们兼容?

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
    int a, b, c, d;
}
t_cuatro;

void order(t_cuatro * q);

int main()
{
    t_cuatro x = {5,6,2,8};
    printf("%d, %d, %d, %d\n", x.a, x.b, x.c, x.d);
    ordenar(&x);
    printf("%d, %d, %d, %d\n", x.a, x.b, x.c, x.d);
    return 0;
}

void order(t_cuatro  *q)
{
    int * aux;

    int aux2;

    int i,j;

    aux=q;

    for(i=0;i<4;i++)
    {
        for(j=i+1;j<4;j++)
        {
            if(*(aux + i)>*(aux + j))
               {
                   aux2 = *(aux+i);
                   *(aux+i) = *(aux+j);
                   *(aux+j) = aux2;

               }
        }
    }


}

int *struct t_cuatro * 不兼容。你不能 "make" 它们兼容。

看起来您正试图对结构中的内容进行排序...但您实际上并没有使用 order() 中的成员。我建议您使用 array(而不是四个变量:a、b、c 和 d):

typedef struct
{
    int arr[4];
}
t_cuatro;

然后在order()你可以把它分配给一个int *:

void order(t_cuatro  *q)
{
    int *aux = q->arr;
    /* remove the assignment aux = q; */
 ....

将数组打印为:

for (size_t i = 0; i < sizeof x.arr/sizeof x.arr[0]; ++i)
printf("%d ", x.arr[i]);