Char(单个字母)必须是正确工作的指针吗?

时间:2016-02-01 06:06:37

标签: c xcode string pointers char

我已经搜索过,也许这甚至都不是问题,但在使用C中的字符处理时(我正在使用Mac上的X-Code)除非我使用指针,否则处理它们时遇到问题

int main(int argc, const char * argv[]){
    char myChar = "A";

    print("%c\n",myChar);
    print("%d\n",myChar);

    print("%c\n",65);
    print("%c\n",74);

    return 0;

}

所以,简单的东西,但这是输出:

>J
>74

>A
>J

如你所见,当我使用%c打印myChar时,它给了我lettre J而不是A,同样的事情当我使用%d时,给我74(char代码为J)而不是65。

我的变量声明也有一条警告信息:

  

指向整数转换的指针不兼容,使用char类型的表达式初始化char[2]

这有点奇怪。

现在用这个替换我的代码时:

int main(int argc, const char * argv[]){
    char *myChar = "A";

    print("%c\n",*myChar);
    print("%d\n",*myChar);

    print("%c\n",65);
    print("%c\n",74);

    return 0;

}

输出符合预期:

>A
>65

>A
>J

有关这种行为到期的任何想法?我错过了什么或者我不理解某事吗?

1 个答案:

答案 0 :(得分:4)

在您的代码中,

char myChar = "A";

不正确。 "A"字符串文字,不适合char。你可能想写

 char myChar = 'A';

代替。

注意:启用编译器警告并注意它们。