第1个回答 2012-12-26
(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的说法应该是正确的,这是一条错误语句。
第2个回答 2012-12-26
(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
(1)是正确的。
(2)中sizeof(ss)的结果是15,这里sizeof计算的是数组的长度,总共有15个字符(最后一位是‘\0’),数组长度为15
(3)中strlen(ss)的结果是14,这里strlen计算的是字符串长度。
(4)整形数组不能这么定义,这样写是错误的,两个错误:1. “012345678Array”是字符数组,不能用int型数组存储。 2. 定义应该用{1,2,3} 这样才行
第5个回答 2012-12-26
1对,2第一个结果为15 3第二个结果为14 第四个定义就不对