字符串和指针的问题

Wl7*_*l7a 1 c string pointers

有人可以告诉我为什么这个程序不起作用?

int main()
{
    char *num = 'h';
    printf("%c", num);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

1>c:\users\\documents\visual studio 2010\projects\sssdsdsds\sssdsdsds\sssdsdsds.cpp(4): error C2440: 'initializing' : cannot convert from 'char' to 'char *'

但是,如果我写这样的代码:

int main()
{
    char num = 'h';
    printf("%c", num);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它正在工作.

JSB*_*ոգչ 5

char *num = 'h';
Run Code Online (Sandbox Code Playgroud)

这里,字母'h'是a char,你试图分配给a char*.这两种类型不一样,所以你得到了上面你看到的问题.

这可行:

char *num = "h";
Run Code Online (Sandbox Code Playgroud)

区别在于你在这里使用双引号("),它创建一个char*.

这也有效:

char letter = 'h';
char* ptrToLetter = &letter;
Run Code Online (Sandbox Code Playgroud)

您应该阅读C中的指针,以准确理解这些不同结构的作用.