c语言数组赋值

一、数组定义原则:

长度是常量,赋值用大括号括起来。

例:

int data[5] = {5, 2, 4, 0, 3};

如果用变量:

int n=5;

int a[n] = { 1,2,3,4,5 };

gcc报错:

error: variable-sized object may not be initialized

先追加一个经典的例子:

#include <stdio.h>
#include <stdlib.h>

void func()
{
    int i = 0;
    int a[5]={
        [0] = 5,
        [1] = 6,
        [4] = 10,
    };

    for(i=0; i<5;i++){
        printf("a[%d]:= %d \n", i, a[i]);

    }
}


int main(int argc, char *argv[])
    {
        func();
        return 0;
    }
~     

和枚举相似的赋值逻辑, 数组赋值是可以跳跃的.

 

二、结构体数组:

 

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    int a;
    int array[2];
}ARRAY_STRU;

typedef enum index{
    E0,
    E1,
    E2,
}ENUM_INDEX;

void test(){
    int n=5;
//int a[n] = { 1,2,3,4,5 };
    int a[5]= {5, 2, 4,};

    for(int i=0; i< 5; i++){
        printf("a[%d]:= %d", i, a[i]);
    }
    printf("\n");

    return;
}

void senior_test(){
    int i=0;

    ARRAY_STRU mygroup[3]={
        [E0]={1,{1,2}},
        [E2]={1,{1,2}},
    };

    for(int i=0;i<3; i++){
        if(mygroup[i].a){
            printf("the %dth data is not null\n", i);
            printf("mygroup[%d].a:=%d \n", i,mygroup[i].a);
            printf("mygroup[%d].array:= %d %d \n", i,mygroup[i].array[0], mygroup[i].array[1]);
        }
    }
}

int main(int argc, char* argv[])
{
    test();
    senior_test();
    return 0;
}

 

 

 

 

### C语言数组赋值方法 在C语言中,数组是一种重要的数据结构,用于存储相同类型的多个元素。以下是几种常见的数组赋值方式: #### 1. 初始化时直接赋值 可以在定义数组的同时为其分配初始值。这种方式适用于已知固定数值的情况。 ```c int arr[5] = {1, 2, 3, 4, 5}; ``` 如果只提供部分初值,则未指定的部分会自动初始化为零[^2]。 ```c int arr[5] = {1, 2}; // 剩余三个位置会被设置为0 ``` #### 2. 使用`for`循环逐个赋值 当需要动态计算或输入数组中的每一个值时,可以通过`for`循环逐一赋值数组元素。这种方法非常灵活,适合处理复杂的逻辑运算。 ```c #include<stdio.h> int main() { int arr[10]; int sz = sizeof(arr) / sizeof(arr[0]); for(int i = 0; i < sz; ++i){ arr[i] = i * 2; // 对每个元素进行特定操作并赋值 } for(int i = 0; i < sz; ++i){ printf("%d ", arr[i]); // 打印结果验证 } return 0; } ``` 上述代码展示了如何通过乘法表达式来填充整个数组,并最终将其内容打印到标准输出流上[^1]。 #### 3. 多维数组赋值 对于多维数组而言,其赋值过程类似于一维情况下的扩展版本。这里给出一个二维指针数组的例子作为说明: ```c #include<stdio.h> int main(){ int a=1,b=2,c=3,d=4,e=5,f=6; int* ptr1[] = {&a,&b}; int* ptr2[] = {&c,&d}; int* ptr3[] = {&e,&f}; int (*ptrArrArr)[2] = malloc(3*sizeof(*ptrArrArr)); *(ptrArrArr+0)=ptr1; *(ptrArrArr+1)=ptr2; *(ptrArrArr+2)=ptr3; for(int row=0;row<3;++row){ for(int col=0;col<2;++col){ printf("%d ",*(ptrArrArr[row]+col)); } putchar('\n'); } free(ptrArrArr); return 0; } ``` 此程序片段创建了一个指向两个整数地址的一级指针集合,并进一步构建了由这些一级指针组成的二级指针数组。最后实现了对其成员访问以及释放内存资源的操作[^3]。 --- ### 总结 以上介绍了三种不同的C语言数组赋值技术——静态初始化、利用循环语句实现动态更新还有针对复杂结构体比如嵌套指针形式下完成相应设定的方法论探讨。每种都有各自适用场景,在实际开发过程中可以根据需求选用最合适的方案解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值