C语言中没有String类型

C 是静态弱类型语言。意味着类型(包括 size 等信息,你使用 sizeof 就是编译时候得到的)在编译的时候就能确定下来。

它的原生简单类型有 char int float 这样的,原生复合类型有 struct,以及“伟大”的 指针类型 primitive_type * .

这些类型的设计是在编译时可以明确确定存储空间大小,比如 char 占一个字节。32bit 机器上的指针为 4 Bytes.

所谓的 String 类型,它的大小不能在编译的时候确定下来,因为你将存储 string 的长度不是固定的,可大可小。你说编译器给 string 分配多少合适?

所以在 C 中 string 只能以复合类型存在,一般用 struct 包含一个指针类型和一个表示存储空间大小的整数类型。

你见到的其他语言的 string 也并非它最基本的类型。只不过作为标准库提供出来了,方便使用。C 不屑于干这事 —— 因为它有“伟大”的指针。


作者:wsivoky
链接:https://www.zhihu.com/question/23248839/answer/24048647
来源:知乎
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值