A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 疾风追马 中级黑马   /  2015-7-9 20:38  /  2248 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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

13 个回复

倒序浏览
指针变量的sizeof值与指针所指的对象没有任何关系,正是由于所有的指针变量所占内 存大小相等,你写的是p,是指针,所以是4
回复 使用道具 举报
guo150828 发表于 2015-7-9 20:53
指针变量的sizeof值与指针所指的对象没有任何关系,正是由于所有的指针变量所占内 存大小相等,你写的是p, ...

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

数组名是一个地址,指针也是一个地址,打印出来不一样吗?
回复 使用道具 举报
你这里理解的有误区,首先地址和内存空间并不是一个概念,例如长整型数据所占据8个字节,但是指针变量会指向这8个字节吗?显然不可能,只会指向首地址然后依照数据类型,读取所需的字节数。而你所说的数组名和指针的地址也不是siezof所需要的结果,它只是计算对象所包含的字节数

评分

参与人数 1黑马币 +6 收起 理由
疾风追马 + 6 赞一个!

查看全部评分

回复 使用道具 举报
算字符串的长度 ,一般用strlen这个函数,包含<string.h>这个头文件,然后strlen(p)就可以算出字符串的长度了

点评

赞一个~  发表于 2015-7-9 22:20
回复 使用道具 举报
是32bit 64bit的问题么? 要不指针变量应该是8字节吧
回复 使用道具 举报
OUT___Man 发表于 2015-7-9 22:16
是32bit 64bit的问题么? 要不指针变量应该是8字节吧

恩,32位是4个字节,64位是8字节
回复 使用道具 举报
用strlen就可以算出字符串的长度
回复 使用道具 举报
p 是一个指针 指针变量所占内存都是4
回复 使用道具 举报
你写的是求数据类型在内存中所占的字节数啊,要求字符串长度可以用strlen
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马