c++ - 覆盖 C 数组中的第一个元素
问题描述
下面的代码有效:
uint8_t test[2] = "7";
cout << test[0];
但是如果我之后添加以下代码以便将“7”更改为“5”,那么它将不起作用:
test[0] = "5";
cout << test[0];
我得到错误:
错误:从 'const char*' 到 uint8_t 的无效转换
这是为什么?
解决方案
"7"
是一个字符串文字。字符串是字符数组,字符串字面量也是如此。字符串文字可用于初始化其他字符数组。uint8_t
看起来不像字符类型,但它实际上是unsigned char
. 因此,uint8_t test[2]
它是一个字符数组,可以使用字符串文字对其进行初始化。
test[0]
不是字符数组。它是单个字符(特别是,它是数组中的第一个字符test
)。无法将字符串文字分配给字符。但是,可以将字符文字分配给字符,在这种情况下您可能打算这样做:
test[0] = '5';
PStest = "5"
也不行。数组可以初始化,但不能赋值。
推荐阅读
- heroku - 如何将 Redis rdb 文件导入 Heroku
- python - Python pygame.midi.Input.read() 的返回类型格式
- c# - 用于多个文件的 Sha256、sha512
- python - Opencv,更新“第一”帧
- python - concurrent.futures.as_completed 是否会为已取消的期货产生收益?
- typescript - Typescript - 绑定元素“类型”隐式具有“任何”类型
- postgresql - 在一个查询中选择日期和所有时间之间的计数 Postgres DB
- python - For 循环未执行(每次列表中出现“11”时尝试更改变量) BLACKJACK
- visual-studio-code - 在 VS Code 中隐藏括号行
- python-3.x - 如何使用来自 biopython 的 Seq.IO 解析 fasta 字符串