使用char指针时,如何解决代码错误

时间:2017-08-23 04:04:49

标签: c pointers

当我尝试编译时,我收到警告,我无法解决这个问题。你能帮帮我吧谢谢。

  

警告:初始化从指针生成整数而不进行强制转换   [-Wint-conversion] char ch = NULL;                ^

这是我的代码:

#include <stdio.h>
#include <string.h>
#include "order.h"
void readInts(int* ptr1, int*ptr2, int*ptr3, char* ptrChar);

int main(void)
{
    int p1, p2, p3;
    char ch == NULL;
    readInts(&p1, &p2, &p3, &ch);

    if (ch == 'A')
    {
    printf("%s\n", "Ascending3");
    printf("%s %d %d %d\n", "Before swap: ", p1, p2, p3);
    ascending3(&p1, &p2, &p3);
    printf("%s %d %d %d\n\n", "After: ", p1, p2, p3);
    }
    else if (ch =='B')
    {
    printf("%s\n", "Descending3");
    printf("%s %d %d %d\n", "Before swap: ", p1, p2, p3);
    descending3(&p1, &p2, &p3);
    printf("%s %d %d %d\n\n", "After swap: ", p1, p2, p3);
    }
    return 0;
}

void readInts(int* ptr1, int* ptr2, int* ptr3, char* ptrChar)
{
    printf("%s\n", "Enter 3 numbers: ");
    scanf("%d %d %d", ptr1, ptr2, ptr3);
    printf("%s\n", "Enter a character A&B");
    scanf(" %c", ptrChar);
}

1 个答案:

答案 0 :(得分:1)

编译器告诉您它希望将NULL分配给指针类型。您为字符分配NULL,而不是字符指针。因此,它将NULL指针隐式转换为0整数,然后再将其指定给字符ch。

它警告你,这可能不是你想要的,你应该检查代码。在您的情况下,您可能只想为角色分配0。

char ch = 0;