C语言中没有String类型
2017-04-11 20:08
204 查看
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
来源:知乎
它的原生简单类型有 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
来源:知乎
相关文章推荐
- C++中有string类,string是一个类不是一种类型,c语言中没有
- c语言中没有string类型变量怎么办?没有bool怎么办?
- c语言string类型转为double类型
- 没有找到接受“std::string”类型的左操作数的运算符
- Javascript将字符串日期格式化为yyyy-mm-dd的方法 js number 类型 没有length 属性 string类型才有
- C语言中没有string
- 第十周 字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char *表示
- 二进制"<<"没有找到接收"std:string"类型的右操作数的运算符(或没有可接收的转换)
- python利用ctypes的指针传入int型列表和string类型列表到c语言中
- ERROR:没有与这些操作数匹配的运算符,操作数类型为std::string
- 关于C语言中有string类型吗?
- 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符
- C++ error C2679: 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)
- C2679 二进制“>>”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)
- 求大数的阶乘。比如1000的阶乘。C语言里没有能够存这么大的数据类型。
- enum类型是静态,enum类型仅限于long、int、short 和byte。string 是 System.String的别名,没有什么区别,只不过string是关键字。
- 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)
- c语言里面竟然没有bool类型
- C语言模拟String对象类型
- 说说C语言与C++的有些区别(一)----为什么C语言没有BOOL类型,而C++有;枚举类型的区别;左值