黑马程序员技术交流社区

标题: 求字符串长度的问题 [打印本页]

作者: 疾风追马    时间: 2015-7-9 20:38
标题: 求字符串长度的问题

我想求字符串P的长度,为什么hello!是6个字符,打印出来就成4个字符了!

作者: guo150828    时间: 2015-7-9 20:53
指针变量的sizeof值与指针所指的对象没有任何关系,正是由于所有的指针变量所占内 存大小相等,你写的是p,是指针,所以是4
作者: 疾风追马    时间: 2015-7-9 21:02
guo150828 发表于 2015-7-9 20:53
指针变量的sizeof值与指针所指的对象没有任何关系,正是由于所有的指针变量所占内 存大小相等,你写的是p, ...

那如果我想用sizeof求出那个字符串的长度应该怎么写呢?
作者: guo150828    时间: 2015-7-9 21:09
sizeof的括号中可以直接写数据类型,也可以写所要表达的数据,例如sizeof( object ); // sizeof( 对象 );
sizeof( type_name ); // sizeof( 类型 ),至于你想求字符串长度,你可以定义一个字符串数组,然后sizeof数组名称就可以了,希望采纳,多给几分
作者: 弹剑    时间: 2015-7-9 21:12
楼上解释的很清楚啊,学习了
作者: 疾风追马    时间: 2015-7-9 21:16
guo150828 发表于 2015-7-9 21:09
sizeof的括号中可以直接写数据类型,也可以写所要表达的数据,例如sizeof( object ); // sizeof( 对象 );
s ...

数组名是一个地址,指针也是一个地址,打印出来不一样吗?
作者: guo150828    时间: 2015-7-9 21:22
你这里理解的有误区,首先地址和内存空间并不是一个概念,例如长整型数据所占据8个字节,但是指针变量会指向这8个字节吗?显然不可能,只会指向首地址然后依照数据类型,读取所需的字节数。而你所说的数组名和指针的地址也不是siezof所需要的结果,它只是计算对象所包含的字节数
作者: aludiba    时间: 2015-7-9 21:56
算字符串的长度 ,一般用strlen这个函数,包含<string.h>这个头文件,然后strlen(p)就可以算出字符串的长度了
作者: OUT___Man    时间: 2015-7-9 22:16
是32bit 64bit的问题么? 要不指针变量应该是8字节吧
作者: 疾风追马    时间: 2015-7-9 22:18
OUT___Man 发表于 2015-7-9 22:16
是32bit 64bit的问题么? 要不指针变量应该是8字节吧

恩,32位是4个字节,64位是8字节
作者: 任伟    时间: 2015-7-9 22:26
用strlen就可以算出字符串的长度
作者: 18678927239    时间: 2015-7-9 22:56
p 是一个指针 指针变量所占内存都是4
作者: zhaofeizlj    时间: 2015-7-9 23:28
你写的是求数据类型在内存中所占的字节数啊,要求字符串长度可以用strlen




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2