C语言里sizeof('a')是多少?

请高手解答下面代码注释中的疑问

// 编译环境mingw5

#include

int main(int argc, char *argv[])

{

char *p1 = 'a';// 1.这样能取到地址码? 为什么gcc有警告:warning: initialization makes pointer from integer without a cast

char *p2 = 'b';

char *p3 = "hello";// 2.这样取地址应该没问题吧?

char *p4 = "world";

printf("%d %d ", p1, p2);

printf("%d %d ", p3, p4);

printf("%d ", sizeof('h'));//3.为什么结果是4 ???

printf("%d ", sizeof("hello"));

return 0;

}

------最佳解决方案--------------------

1 不能

'a'意为“字符a的ASCII码”,它的类型是int,数值是97(或者96,记不清了)

这条语句的意思是,定义一个字符指针p1,它指向地址空间中绝对地址为97的内存。

2 可以

直接写在代码中的字符串,在编译时就被编译为这