你不能在C中创建string类型的变量,因为“string”不是一个类型.

根据定义,“字符串”是“由第一个空字符终止并包括第一个空字符的连续字符序列”.它不是数据类型,而是数据格式.

char数组可能包含一个字符串. char *可以指向一个字符串.它们都不是字符串.

如果您愿意,可以定义

typedef char *string; /* not recommended */

但这是误导,因为我提到的char *类型的变量不是字符串.

最好的做法是直接使用char *.这清楚表明你的变量是一个指针.它也与标准库的定义方式一致;例如,strlen函数声明为:

size_t strlen(const char *s);

它也与大多数有经验的C程序员编写处理字符串的代码的方式一致.

由于C处理数组的方式(或多或少作为二等公民),数组(包括包含字符串的数组)通常通过指向其元素的指针进行操作.我们可以使用指针算法遍历数组.假装指针是数组,或者它是一个字符串,是诱人的,似乎可以使代码更容易理解,但从长远来看,它只会引起混淆.

像宏的方法

#define string char*

甚至比typedef更糟糕.宏被扩展为令牌序列;处理器不知道C声明的语法.所以鉴于上面的定义,这个:

string x, y;

扩展到

char* x, y;

它将x定义为char *,将y定义为char.如果你需要一个类型的名字,typedef几乎总是比#define好.

c 语言字符串类型定义,C字符串类型定义相关推荐

  1. 去掉字符串中的单引号和双引号_同时搞定Android和iOS的Dart语言(4):字符串类型...

    在Dart语言中,用String表示字符串类型,可以用单引号或双引号表示字符串的值,例如,下面声明String类型变量的代码都是正确的. String s1 = 'hello world';Strin ...

  2. python-数据类型-字符串入门-定符串的定义-type函数-iput函数

    字符串数据类型 什么是字符串 字面意思,字母符号,一串(多个) 比如:羊肉串 字符的表达方式,使用引号括起来 例如 "hello" "python" 查看一个数 ...

  3. python语言中内置的字符串排版方法_python基础知识(python内置数据类型-字符串)...

    python中的字符串 字符串基本特点 字符串的本质是字符序列.python中的字符串是不可变的,无法对原字符串做任何修改(不能用下标赋值的方式去改变字符串).但是可以将字符串的一部分赋值创建新的字符 ...

  4. MySQL 基础 -- MySQL 数据类型说明(数值类型、字符串类型、日期时间类型)、SQL通用语法和SQL分类

    文章目录 1. 数据类型说明(数值类型.字符串类型.日期时间类型) 1.1数值类型 1.2 字符串类型 1.3 日期类型 1.4 数据类型练习:设计一张员工信息表 2. SQL通用语法和SQL分类 2 ...

  5. Redis源码-String:Redis String命令、Redis String存储原理、Redis String三种编码类型、Redis字符串SDS源码解析、Redis String应用场景

    Redis源码-String:Redis String命令.Redis String存储原理.Redis String三种编码类型.Redis字符串SDS源码解析.Redis String应用场景 R ...

  6. c语言一维数组字符串数组初始化,一维数组的定义、初始化和引用

    一维数组的定义.初始化和引用 一维数组的定义.初始化和引用 1.一维数组的定义方式为: 类型说明符 数组名[常量表达式] (1)数组名的命名方法与变量名相同,遵循标识符命名规则; (2)数组是用方括号 ...

  7. C语言-宏定义和字符串

    C语言-宏定义和字符串 定义符号常量(宏定义) 格式 下面我们看看如何在C语言中写宏定义呢 接下来我们看看运行结果吧 关于c语言中的字符串 定义符号常量(宏定义) 把程序中出现的所有标识符,替换为已经 ...

  8. python语言字符串定义_Python字符串(string)

    简介 字符串(string)类型是python标准类型之一,也就是"文本"类型,并且字符串是不可更改的数据类型,意味着不能单独改变其中的某个值.与其他语言不同,python中没有字 ...

  9. Go 学习笔记(47)— Go 标准库之 strconv(string/int 互相转换、Parse 字符串转换为指定类型、Format 指定类型格式化为字符串)

    参考: http://c.biancheng.net/view/5112.html 在实际开发中我们往往需要对一些常用的数据类型进行转换,如 string . int . int64 . float ...

  10. MySQL 学习笔记(12)— 数据类型(定长字符、变长字符、字符串大对象、数字类型、日期时间类型、二进制类型)

    MySQL 常见的数据类型有字符串类型.数字类型.时间类型.二进制类型.具体的分类如下图: 1. 字符串类型 字符串类型用于存储字符和字符串数据,主要包含三种具体的类型:定长字符串.变长字符串以及字符 ...

最新文章

  1. ABP Zero示例项目问题总结
  2. Python 字符串操作
  3. Leetcode 146. LRU缓存机制 解题思路及C++实现
  4. Jquery getJSON方法分析(一)
  5. EconomicIndoor集成测试
  6. Linux(CentOS)中常用软件安装,使用及异常——Zookeeper, Kafka
  7. JQ表单序列化变成 对象
  8. Tips--TensorFlow报错:tensorflow:Early stopping conditioned on metric `val_loss` which is not available
  9. 为什么我们一直赚不到钱?
  10. 十二进制转二进制--2018
  11. html 调高德地图 导航,在H5页面内通过地址调起高德地图实现导航
  12. mysql崩 数据同步_MySQL5.7 大大降低了半同步复制-数据丢失的风险
  13. 高通平台修改msm8916_defconfig
  14. 在PyTorch训练一个epoch时,模型不能接着训练,Dataloader卡死
  15. 大疆无人机自动避障技术盘点
  16. 图像处理-007形态变换(二)
  17. 应用基准化分析—Benchmark
  18. 怎么设置电脑开机后自动打开一个文本文档
  19. C#实现图书管理系统(课程设计)——第二步、登陆界面
  20. 小胖游海南(Mar,2010)-三亚,博鳌,海口

热门文章

  1. asp期末大作业——在线考试系统网站
  2. linux vim 查找或替换空格
  3. vue项目中如何用代理解决跨域,什么是代理
  4. 获取被人电话本的小恶意程序
  5. 德国出现全自动餐厅 被称为“喂猪系统”(组图)
  6. 高级office计算机考试,计算机高级OFFICE考试参考.pdf
  7. javaweb——Response下载文件
  8. 2012年12月27 我的第一个iphone小程序
  9. “鸭王”周黑鸭,迷失在新消费时代
  10. malloc函数及memset函数用法详解