//
// main.c
// 数组的初始化
//
// Created by micalafei on 15/8/18.
// Copyright (c) 2015年 micalafei. All rights reserved.
//
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 需要保存100个学生的成绩
// 格式:元素类型 数组名称[元素个数];
// 数组初始化的方式:基本上跟函数,变量等差不多;
// 1.先定义在初始化
/*
int score[100];
score[0] = 99;
score[1] = 98;
score[2] = 97;
score[3] = 96;
score[4] = 95;
// ....
printf("score[0] = %i\n",score[0]);
printf("score[1] = %i\n",score[1]);
printf("score[2] = %i\n",score[2]);
*/
// 2.完全初始化
int score[2] = {12,13};
printf("score[0] = %i\n",score[0]);
printf("score[1] = %i\n",score[1]);
// 3.部分初始化
// 默认从0开始初始化, 依次赋值
// 注意: 如果"在部分初始化中"对应的内存没有被初始化, 那么默认是0
int scores1[3] = {11, 22};
printf("scores1[0] = %i\n", scores1[0]);
printf("scores1[1] = %i\n", scores1[1]);
printf("scores1[2] = %i\n", scores1[2]);
printf("-------\n");
// 注意: 如果没有对数组进行初始化(完全和部分), 那么不要随便使用数组中的数据, 可能是一段垃圾数据(随机值)
int scores2[3];
printf("scores2[0] = %i\n", scores2[0]);
printf("scores2[1] = %i\n", scores2[1]);
printf("scores2[2] = %i\n", scores2[2]);
printf("-------\n");
//注意: 不建议使用变量定义数组, 如果使用了变量定义数组, 作为数组的元素个数, 不初始化的情况下是随机值, 如果初始化会直接报错
// int number = 3;
// int scores3[number] = {12,13}; //直接报错了;
// printf("-------\n");
//报错信息:
///Users/micalafei/Desktop/ios广州小码哥150810班级学习/0818(day07)/day07/数组的初始化/main.c:56:17: Variable-sized object may not be initialized
// 4.没有定义元素个数的初始化:
// 注意: 如果定义的同时进行初始化, 那么元素的个数可以省略
// 省略之后, 初始化赋值几个数据, 那么数组的长度就是几. 也就是说数组将来就能存储几个数据
int scores5[] = {1, 3};
printf("0 = %i\n", scores5[0]);
printf("1 = %i\n", scores5[1]);
printf("-------\n");
// 注意; 如果定义数组时没有进行初始化, 那么不能省略元素个数
// int scores6[];
//报错信息:
///Users/micalafei/Desktop/ios广州小码哥150810班级学习/0818(day07)/day07/数组的初始化/main.c:70:9: Definition of variable with array type needs an explicit size or an initializer
// 5.建立索引
int scores7[10] = {[3] = 10,[5] = 15};
printf("scores7[3] = %i\n",scores7[3]);
printf("scores7[5] = %i\n",scores7[5]);
// 注意: 只能在定义的同时利用{}进行初始化, 如果是先定义那么就不能使用{}进行初始化
// 如果先定义那么就不能再进行整体赋值, 只能单个赋值
return 0;
}