c - 数组越界,索引-1

标签 c arrays char indexoutofboundsexception

我基本上想根据给定的数字存储一组学生姓名。例如,如果用户要插入 5 个姓名,则数组大小将为 5。如果用户要插入 10 个姓名,则数组大小将为 10。

我有一个类似这样的方法来为数组中的特定元素设置名称。

void setNames(char *names){
     strcpy(name[i], names);
}

问题是,我该如何进行数组绑定(bind)检查?听说只能在索引为-1时才可以添加。

最佳答案

数组不维护它们自己的大小,你必须为它们做这件事。这是 vector 更容易处理的部分原因,也是为什么每个人都会说“wtf,原始数组?使用 vector ”的部分原因。数组只是一 block 连续的内存,仅此而已。 vector 包含一个数组,在某种程度上可以让你像数组一样使用它,但它会为你处理很多内务细节。

无论如何,如果您真的想使用原始数组,那么您需要随它一起传递大小信息。 C 字符串是一个以 null 结尾的数组——只是一个普通的旧数组,但最后一个元素是 \0。这样你就可以在不知道它的大小的情况下读取它,只是不要读取最后的空字符(龙在那里)。

关于c - 数组越界,索引-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27005594/

相关文章:

c - C 中的隐式函数声明

c - For循环只执行一次

c - 标准 I/O 库的缓冲

php - 我如何在 PHP 中的另一个数组中转换这个 M-N mysql 数组? (里面的例子)

connect() 到外部 IP 不工作

python:为什么random.shuffle改变数组

arrays - 错误: Cannot convert value of type "[String]" to expected argument type "String?"

C++:使用函数重载和 char 到 int 之间的隐式转换,反之亦然

C 程序 - 基本计算器

c++ - 如何访问数百万位进行散列