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 可以
直接写在代码中的字符串,在编译时就被编译为这个字符串存放在常量区的地址。