在c++中,下面的结果正确不?如果不正确,为什么?请高手帮忙分析一下,谢谢!

(1)char*ss="012345678Array";sizeof(ss)结果4sizeof(*ss)结果1(2)charss[]="012345678Array";s... (1)char* ss = "012345678Array";
sizeof(ss) 结果 4
sizeof(*ss) 结果 1
(2)char ss[] = "012345678Array";
sizeof(ss) 结果 11
sizeof(*ss) 结果 1
(3)char ss[100] = "012345678Array";
sizeof(ss) 结果是100
strlen(ss) 结果是10
(4)int ss[100] = "012345678Array";
sizeof(ss) 结果 400
展开
 我来答
维多K
2012-12-26 · TA获得超过413个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:174万
展开全部
(1)完全正确。sizeof操作符返回一个变量、对象或者类型所占的内存字节数。ss在这里是一个字符串指针,指针变量在内存中占四个字节,因此输出4;而*ss表示的是ss变量所指向的字符,即字符串首字符'0',因此在内存中占一个字节,输出1;
(2)部分错误。其中变量ss表示数组,占用的内存大小是15个字节(字符串长度加结尾符'\0'),因此sizeof应该输出15;而*ss跟(1)一样,是对的!
(3)部分错误。这里的ss是一个包含100个字节的数组,因此sizeof输出100是对的;但是strlen表示字符串长度(不包括结尾字符'\0'),因此应该strlen(ss)输出14;
(4)错误。这里的错误是声明出错,因为你声明的是一个整形int数组,而用一个字符型数组来赋值,是不对的!不知道是不是你笔误?如果是char型数组,那么sizeof输出就应该是100,同问题(3)
_whales
2012-12-26 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:478万
展开全部
(1)char* ss = "012345678Array";
sizeof(ss) 结果 4 //32Bit 如VC6是对的,16Bit如BC4.5不对结果为2,或4
// near* 或far * 不同内存模式不一样
sizeof(*ss) 结果 1 //对
(2)char ss[] = "012345678Array";
sizeof(ss) 结果 11 //15
sizeof(*ss) 结果 1 //对
(3)char ss[100] = "012345678Array";
sizeof(ss) 结果是100 //对
strlen(ss) 结果是10 //14
(4)int ss[100] = "012345678Array";
sizeof(ss) 结果 400 //kuliuhong的说法应该是正确的,这是一条错误语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青山郁
2012-12-26 · TA获得超过219个赞
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:89.1万
展开全部
(1)char* ss = "012345678Array";
sizeof(ss) 结果 4:正确,ss是指针,一个指针大小为4字节
sizeof(*ss) 结果 1:正确,*ss是字符数组的第一个元素,即字符0,一个字符大小为1字节

(2)char ss[] = "012345678Array";
sizeof(ss) 结果 11: 错误,ss是一个字符串,字符串默认都是以一个‘\0’非显示字符结尾的,所以整个字符串的大小是(14+1)个字符*1字节=15字节(包括了字符串末尾的'\0'字符)
sizeof(*ss) 结果 1:正确,与(1)同理

(3)char ss[100] = "012345678Array";
sizeof(ss) 结果是100:正确,ss是字符数组,数组在创建时已申请好了内存空间, 大小是100*1 = 100字节
strlen(ss) 结果是10:错误,strlen返回的是数组ss的长度,即14.

(4)int ss[100] = "012345678Array";
sizeof(ss) 结果 400:正确,与(3)同理,数组在创建时已经申请好了内存空间,因为int类型大小为4字节,所以总大小为100*4 = 400字节。

注意:对于不同的机器类型,int类型的长度是不一样的,有的机器上是32位(4字节), 有的机器上是16位(2字节)。而以上解释是按int类型为4字节长度算的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
程序猿3号
2012-12-26 · TA获得超过1810个赞
知道小有建树答主
回答量:1029
采纳率:33%
帮助的人:752万
展开全部
(1)是正确的。
(2)中sizeof(ss)的结果是15,这里sizeof计算的是数组的长度,总共有15个字符(最后一位是‘\0’),数组长度为15
(3)中strlen(ss)的结果是14,这里strlen计算的是字符串长度。
(4)整形数组不能这么定义,这样写是错误的,两个错误:1. “012345678Array”是字符数组,不能用int型数组存储。 2. 定义应该用{1,2,3} 这样才行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蜗裤似F
2012-12-26 · 超过19用户采纳过TA的回答
知道答主
回答量:77
采纳率:100%
帮助的人:39.4万
展开全部
  • (1)正确

  • (2)数组的sizeof应该是得到它开辟的空间大小,即数组元素个数+1(\0)=15

  • (3)数组的strlen得到的是其元素个数14 

  • (4)字符串不能像这样直接赋值给int型数组

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兮兮往矣
2012-12-26 · 超过22用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:51.1万
展开全部
1对,2第一个结果为15 3第二个结果为14 第四个定义就不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式