繁体   English   中英

警告:赋值使指针从整数开始,而在C程序中没有强制转换[-Wint-conversion]

[英]warning: assignment makes pointer from integer without a cast [-Wint-conversion] in C program

我无法解决此问题:警告:赋值使指针从整数开始而没有强制转换[-Wint-conversion]-> auxcandidate = alpha [pos]

这是我的代码:

char* getkey(int minimo, int maximo, int alphalen, int index, char alpha[]);   
int main()  
    {  
        int minimo = 2;
        int maximo = 2;
        char *alpha = "abc";
        int alphalen = strlen(alpha);

        char *candidata;

        printf("La candidata es: ");
        candidata = getkey(minimo, maximo, alphalen, 5, alpha);
        //printf(" %c", candidata); 
        //if (candidata = "bc")
        //{}
        return 0; 
    }

    char* getkey (int minimo, int maximo, int alphalen, int index, char alpha[])  
    {  
        int cociente, residuo, cont;
        int i = 0;
        char cand[maximo+1];

        char* auxcandidate;

        while (index != 0)
        {
            cociente = index / alphalen;
            residuo = index%alphalen;
            cand[i] = residuo;
            index = cociente;
            i+=1;
        }

        for (cont=i-1; cont>=0; cont--)  
        {   
            int pos = cand [cont];
            auxcandidate = alpha[pos];      
        }
        return auxcandidate;
    }

有人可以解释这些警告吗?

请注意以下行:

auxcandidate = alpha[pos];

Alpha(pos)不是该地址(指针),而是该位置的值,并且您试图将其写入char指针,因此实际上您进行了强制转换,并且这是警告的来源

就像@dear_tzvi所说的那样,该行是警告的来源。

您应该使用:

auxcandidate = &alpha[pos];

如果您希望auxcandidate变量指向该索引

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM