c语言,字符型指针char *s的长度,为什么sizeof(s)与sizeof(*s)的长度为什么不一样?

与电脑的位数有什么关系?计算机的地址总线的长度与什么有关?... 与电脑的位数有什么关系?计算机的地址总线的长度与什么有关? 展开
 我来答
百度网友8b58de0
2020-04-18 · TA获得超过945个赞
知道小有建树答主
回答量:1079
采纳率:83%
帮助的人:323万
展开全部
首先,两个sizeof所求的东西完全不一样,另外sizeof是编译的时候就求出长度,非运行的时候。
sizeof(s)是求指针长度,因为变量定义的是char *s;,这个长度可能是2,可能是4,还可能会是8,是由编译的时候决定的,比如VC6.0编译器长度就是4,因为VC6.0是32位的编译器,它的地址长度是32位表示,4个字节。gcc64位编译器则长度是8,64位系统地址表示长度64位8字节。TC是16位编译器,所以长度是2。综上sizeof(s)与电脑位数和总线有关,但是最重要的是与编译器有关,win64位的系统也可以运行32位的程序,VC6.0编译的程序在win64上运行,sizeof长度依然是4。如果程序gcc64位编译的,则不能运行在XP32位的系统上
sizeof(*s)是求字符的长度,长度为1,不管什么编译器长度不变。
陈余幸运
2020-04-18 · 生活的本意是平淡且知足
陈余幸运
采纳数:294 获赞数:6683

向TA提问 私信TA
展开全部
C语言中,"char s;"是一个字符串,
而"char *s;"是一个指针变量,
是用来存放数据地址的,
有着根本都区别。
追问
s不是一个指针,代表指针变量的地址吗?而且C里有字符串类型的变量吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
考骄70
科技发烧友

2020-04-18 · 智能家居/数码/手机/智能家电产品都懂点
知道小有建树答主
回答量:1096
采纳率:58%
帮助的人:66.2万
展开全部
S应该是一个字符串,长度是一个字符串的长度,*s只是指向字符串的指针,只能表示一个字符,返回值是1,
跟电脑系统位数没有关系!
追问
sizeof(s)返回值是4,所以我认为它输出的是s代表的地址的长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式