数组的定义、初始化及引用

一维数组元素的引用:

#include <stdio.h>
void main()
{
    int i,a[10];
    for(i=0;i<9;i++)
    {
        a[i]=1;
    }
    for(i=9;i>=0;i++)
    {
        printf("%d\n",a[i]);
    }
}

一维数组的初始化:


一维数组程序举例:

#include <stdio.h>

void main()
{
    int i;
    int f[20]={1,1};
    for(i=2;i<20;i++)
    {
        f[i]=f[i-1]+f[i-2];
    }
    for(i=0;i<20;i++)
    {
        if(i%5==0)
            printf("\n");
        printf("%12d",f[i]);
    }
    printf("\n");
}





                
<think>我们有一个结构体,其中包含一个数组成员。初始化结构体时,需要同时初始化这个数组。 根据引用[2][3][4][5]中的例子,我们可以采用以下几种方法: 方法1:在定义结构体数组时,使用花括号进行初始化数组部分用花括号括起来。 例如: struct Student { char name[20]; int scores[3]; }; // 初始化 struct Student stu1 = {"Alice", {90, 85, 95}}; 方法2:如果结构体数组有多个元素,可以这样初始化: struct Student class[2] = { {"Bob", {78, 88, 92}}, {"Cindy", {85, 75, 90}} }; 方法3:使用指定初始化器(C99特性),可以指定初始化某些成员,特别是当结构体复杂时。 例如引用[5]中的方式: test_t arr[3] = { [0] = {ZERO, FIRST}, [2] = {TWO, SECOND}, [1] = {ONE, SECOND} }; 如果结构体中有指针成员,并且指向动态分配的内存,如引用[3]所示,需要小心处理。 注意:初始化数组时,数组初始化值要用花括号括起来。 下面我们用一个具体的例子来说明。</think>### 结构体中定义数组初始化的方法 在C语言中,结构体内定义数组初始化有以下几种常用方法: #### 1. **定义时直接初始化** ```c struct Person { char name[20]; int scores[3]; // 数组成员 }; // 初始化结构体(数组用花括号初始化) struct Person p1 = {"Alice", {90, 85, 95}}; ``` #### 2. **结构体数组初始化** ```c struct Student { char id[10]; int grades[4]; }; // 初始化结构体数组 struct Student class[2] = { {"S001", {78, 88, 92, 80}}, {"S002", {85, 90, 76, 88}} // 每个结构体的数组独立初始化 }; ``` #### 3. **C99指定初始化器** ```c struct Data { int values[5]; char tag; }; // 指定初始化特定元素(未指定元素默认为0) struct Data d1 = { .values = {[1]=10, [3]=20}, // 仅初始化索引1和3 .tag = 'A' }; ``` #### 4. **嵌套结构体初始化** ```c struct Detail { float coords[2]; }; struct Object { int id; struct detail pos; // 嵌套结构体包含数组 }; // 初始化嵌套结构体的数组 struct Object obj = { 101, { .coords = {3.14, 2.71} } // 嵌套初始化 }; ``` #### 关键注意事项: 1. **数组初始化语法**:结构体内的数组必须用`{ }`包裹初始值 ✅ 正确:`{90, 85, 95}` ❌ 错误:`90, 85, 95` 2. **部分初始化**:未显式初始化数组元素自动设为`0`(如`int arr[5]={1}` → `[1,0,0,0,0]`) 3. **字符数组**:字符串可直接赋值,但需确保长度匹配 ```c struct Book { char title[30]; }; struct Book b = {"C Programming"}; // 自动填充字符数组 ``` > 示例输出验证: > ```c > #include <stdio.h> > int main() { > struct Person p1 = {"Alice", {90, 85, 95}}; > printf("%s的分数: %d, %d, %d\n", > p1.name, p1.scores[0], p1.scores[1], p1.scores[2]); > return 0; > } > ``` > **输出**: > ``` > Alice的分数: 90, 85, 95 > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值