c - C 中的数组初始化

标签 c

谁能解释一下为什么不能在给定数组中放置一个'\0' 字符:

char a[]={'r','b'};

a[2]='\0';

上面的代码不应该在第三个位置放置一个空字符,从而将字符数组 a 转换为字符串。

最佳答案

您正在写越过数组边界:当您初始化一个包含两个字符的数组时,最后一个有效索引是 1,而不是 2

你应该用三个项目初始化你的数组,如下所示:

char a[] = {'r', 'b', '\0'};

你也可以使用这个版本:

char a[] = "rb";

这将为您提供一个可写 数组,其中包含一个以零结尾的字符串。

关于c - C 中的数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10661927/

相关文章:

c - 如何在C中扫描复数数组

c - 打印出c中最长的子串

c - c中的字符串数组

c - 在 doxygen 中记录 C 类型定义

iphone - 是否有一个常量定义长整数或整数的最大值?

c - 缩放 MandelBrot 集

在 C 中追加的正确方法

你可以在 c 中不使用 scanf 的情况下为 char 指定默认名称吗?

c - 根据二维数组内的值将另一个单个数组转换为 C 中的二进制

C pthreads send()ing 和 recv()ing 在套接字上。分开工作但没有一起工作。不会退出