动态数组的构建

无论是C还是C++,在学习数组时总有一个小小的愿望,就是能实现下边的事情。

//注意 !!!  这些代码是错误的!!!
#include <stdio.h>
int main(){
    int n;
    int a[n];//具体错在这
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",a[i]);
    }
    return 0;
}

什么意思呢,就是数组下标必须是常量。而很多人会有和博主一样的想法,我特别想自己用多少,就输入多少,但是我又不可能提前知道,能有一个动态的可大可小的数组可好…

那么今天,就来说说这个动态数组。

/*
    动态数组的实现
    以整型数组为例
*/

#include <stdio.h>
//malloc()函数的头文件
#include <stdlib.h>

int main(){
    //这是我们想要去动态输入长度的那个“n”
    int count;
    scanf("%d",&count);

    //因为不知道这块内存要保存什么类型的数据,将指针定义为“void”类型,它可以根据需要被转换为其他任何的指针类型,并指向空,初始化。

    void* memblock = NULL;

    //用malloc()函数动态申请内存,并将返回的指向这块内存区域首地址的指针赋值给memblock指针,也就是让memblock指针指向这块内存区域。

    memblock = malloc(count*sizeof(int));

    //定义指向这块内存区域(什么区域?就是存放动态数组的那块区域)的指针,并指向它。

    int* array = (int*)memblock;

    for(int i=0;i<count;i++)
    {
        //这里是数组的表达,一般教材里都有,array直接是这个数组的首地址,然后每次加一

        scanf("%d",array);
        array++;
    }
    //这里是让这个指针重新指向这个数组的开头
    array =(int*)memblock;
    for(int i=0;i<count;++i)
    {
        printf("%d\n",array[i]);
    }
    //当我们使用完毕后要释放掉实用的内存
    if(NULL!=memblock)
        free(memblock);
    memblock=NULL;
    //这行要解释吗...就是为了出来那个“按任意键结束......”ps因为有些编译器不自动加这个
    system("pause");
    return 0;
}

这就是动态数组的构建,仅仅是构建,是不是很方便呢,后边我会更新利用这个动态数组建立的表。

数据结构是我这里推荐的基础性学习科目,必须学好。对于一些逻辑性的东西。博主会更新一些数据结构方面的代码,栈啊队列啊,后边有图啊树啊什么的。

有人问嵌入式嵌入式呢 不是说好的嵌入式么

博主这两天就会更一个嵌入式C编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值