首页 > 试题广场 >

const char *str = “123456”; si

[单选题]
const char *str = “123456”;,sizeof(str)和strlen(str)的结果分别是()
  • 7,6
  • 7,7
  • 6,7
  • 都不对
64位系统 输出值为 8,6    32位系统 输出值为 4, 6
发表于 2019-03-20 22:28:48 回复(0)
const char *str = “123456”; sizeof(str),因为是char*指针类型,占用四个字节。strlen函数是计数用的,它从头开始遇到'\0'停止计数。

发表于 2019-08-02 16:02:58 回复(0)
Sizeof求指针的大小,32位返回4。64位返回8 字符串的长度不记最后的0
发表于 2019-09-27 21:42:49 回复(0)
sizeof(str)读的是地址,在64系统地址为64位,就8B;32位系统4B
发表于 2019-11-05 17:13:31 回复(0)
1.这里为指针,那么str存储的是该字符串的地址,所以sizeof(str)则为该字符串的首地址,
如果是64位,地址为8字节(Byte),如果是32位,地址为4字节(Byte)。

2.而strlen(str)就是统计字符串长度,那么就是6。

发表于 2022-01-22 22:23:50 回复(0)
实验证明,*在系统内自己就占有4个字节,于是它和char搭配时,字节对齐,会产生它的倍数的空间占用,而受const的影响,sizeof只能测量char *的大小,所以为8.
发表于 2021-11-01 22:44:42 回复(1)

指针是用来记录另一个对象的地址,所以指针的内存大小当然就等于计算机内部地址总线的宽度。

在32位计算机中,一个指针变量的返回值必定是4。在64位计算机中,一个指针变量的返回值必定是8。

指针变量的sizeof值与指针所指的对象没有任何关系。

发表于 2021-06-22 14:55:15 回复(0)
<p>要注意这里的str是指针。64位系统,不管什么类型的指针,sizeof都是8字节。32位系统,不管什么类型指针,sizeof都是4字节。</p>
发表于 2020-12-27 11:04:55 回复(0)
前面有const 所以读取sizeof 的时候应该是读取的4  后面的长度是6
发表于 2019-03-14 22:28:11 回复(1)
注意是指针,太粗心了
发表于 2023-09-18 21:24:06 回复(0)
const char *str = “123456”; sizeof(str),因为是char*指针类型,占用四个字节。strlen函数是计数用的,它从头开始遇到'\0'停止计数。

64位系统 输出值为 8,6    32位系统 输出值为 4, 6
发表于 2022-07-21 15:34:31 回复(0)
是指针
发表于 2022-06-21 16:13:49 回复(0)
是指针,又跳坑里了😠
发表于 2022-03-12 00:18:49 回复(0)
没注意到str是指针
发表于 2022-03-10 09:28:11 回复(0)
sizeof和strlen读的这是个指针
发表于 2021-11-22 14:28:45 回复(0)
此时打印的是str,相当于打印的是一个指针地址的大小。若打印的是*str,则打印的结果是A(注意最后有一个‘\0’)
发表于 2021-11-17 11:03:35 回复(1)
sizeof(指针) 在64位中就是8,在32位中就是4 
发表于 2020-08-06 09:05:43 回复(0)
64、8 6;32、4 6。
发表于 2020-02-27 07:16:37 回复(0)
8,6,应该是内存对齐的原因,sizeof大小
发表于 2020-01-25 10:37:59 回复(0)