首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

字符长度的有关问题

2012-02-29 
字符长度的问题?小问题一:#include stdio.hmain(){charp[]{ a ,b ,c },q[] abc printf( %d%d\

字符长度的问题?
小问题一:
#include <stdio.h>
main()
   {   char   p[]={ 'a ',   'b ',   'c '},   q[]= "abc ";
   printf( "%d   %d\n ",   sizeof(p),sizeof(q));
   };
答案为什么是3,4呀?

        小问题二:
#include <stdio.h>
  main()
   {   char   a1= 'M ',   a2= 'm ';
   printf( "%c\n ",   (a1,   a2)   );   }
这个输出的是M,为什么是这样的呀?

请高手指教下```


[解决办法]
1、
p[]={ 'a ', 'b ', 'c '},是字符数组,只包含了p[0]~p[2]共3个元素;
q[]= "abc ";是字符串,字符串是以 '\0 '结尾的,也就是说p[]={ 'a ', 'b ', 'c ', '\0 '},共有4个元素

[解决办法]
1,字符串常量的末尾,系统会加上一个 '\0 ',因此sizeof(q)为4
2,你只输出了一个字符,所以输出为M.应为printf( "%c\n%c\n ",a1,a2)
[解决办法]
char a1= 'M ', a2= 'm ';
printf( "%c\n ", (a1, a2) );

----------

这个的输出应该是m

逗号表达式的返回是最后一个值得
[解决办法]
xuyanhua1201() ( ) 信誉:100 2007-09-12 19:05:38 得分: 0


我想问下,关于第一个问题 :sizeof()这个函数在计算长度的时候不是忽略了/0的吗?


第二问题
上面的参考答案M.是答案错了吗?
----------------------------------------------------
第一题,
不能这么说,首先sizeof(TYPE)是计算TYPE在内存中实际分配的内存大小,以字节为单位
不存在忽略不忽略/0的说法,第一题之所以会出现3,4的答案是因为分配的内存不同,具体就是
/0的存在

第二题
答案确实应该输出m

你的答案错了



热点排行