arrays - 在 C 中初始化一个数组
问题描述
我正在尝试使用此代码初始化一个数组,但它不显示输出,即
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
#include<stdio.h>
#define SIZE 10
int main() {
int array[SIZE] = {0}, i = 1;
while( i <= SIZE ) {
array[i] = 2 * i - 1;
i++;
}
return 0;
}
我究竟做错了什么?
解决方案
直接错误是在条件
i <= SIZE
请注意,由于数组是从零开始的,因此长度数组的SIZE
项目具有
0, 1, 2, ..., SIZE - 1
索引。所以你可以把
while (i < SIZE)
并得到(你从 开始分配array[1]
,而不是从array[0]
)
trash, 1, 3, 5, ..., 17
但是,我建议重新设计,为什么我们不应该使用典型的for
循环初始化?
for (int i = 0; i < SIZE; ++i)
array[i] = 2 * i + 1;
注意,2 * i + 1
-我们放+
是因为数组是从零开始的,我们想要第一个array
项目array[0]
--be 1
。此代码提供
1, 3, 5, ..., 19
价值观
编辑:正如莫斯科的弗拉德在评论中指出的那样,您可以更改index而不是condition:
while (i <= SIZE) {
array[i - 1] = 2 * i - 1;
i++;
}
在这里我们循环1, 2, ..., SIZE
但将值分配给array[0], array[1], ..., array[SIZE - 1]
项目
推荐阅读
- r - h2o 警告消息太旧的集群
- javascript - 从下拉列表中选择除一个以外的所有选项
- crystal-reports - 如何在水晶报表绘制框和数据绑定中设置颜色。.?
- javascript - Mongoose Model.find() 方法在生产环境中被破坏的问题
- android - 在 Google Firebase 中,我们如何检索从 Firebase 控制台上传的下载 URL 列表和图像?
- sql - 将 from 子句的 table 用于 where 子句的 select 语句的利弊是什么?
- javascript - Ajax xmlhttprequest 缺少“Access-Control-Allow-Origin”标头
- php - Codeigniter 记住我的自动完成功能 = 'new-password'
- angular - 在另一个html文件Angular 5中使用组件选择器后页面停止加载
- swift - UIView 的圆角曲线边缘