在 C 中使用动态内存分配创建数据库

     2023-02-21     260

关键词:

【中文标题】在 C 中使用动态内存分配创建数据库【英文标题】:database creation using dynamic memory allocation in C 【发布时间】:2011-01-05 07:21:09 【问题描述】:

我是编程新手,对链表了解不多...帮我编写程序--

从用户那里获取数据并创建您的数据库。

          a>Data: Name, Age, Date of birth
          b>Memory for each entry should be dynamically created.

我创建了一个结构- 结构数据库 字符名称[25]; 整数年龄[5]; int dob[10]; 结构数据库*下一个; ; 告诉我现在该怎么做...

【问题讨论】:

要在C 中动态分配内存,请查找mallocfree 是的,我必须使用 malloc 和 free,但我不知道如何创建链接列表.. 只有在链接列表中,我才会使用 malloc 和 free,对吗?? 在您正在使用的介绍书中查找。请不要告诉我你打算通过在 *** 上提问来学习编程。这将是一种糟糕的方式。 【参考方案1】:
struct database 
     char name[25];
     int age[5];
     // in my opinion you should only keep dob, since age would have to be constantly updated
     int dob[10]; 
     struct database *next; 
      TCel, *TList, **Alist;

基本思想是,每当您创建一个新 cel 时,您都使用“next”指针将其链接到链表中。例如,您可以在列表末尾添加一个新单元格:

AList InsEnd(AList aL, Info e)  
 
    TLista aux;
    // allocate cel and set the information inside it
    aux = AlocCel(e);                     
    if (!aux) return aL;               
    while (*aL != NULL) 
       aL = &(*aL)->next; 
    // linking the node
    *aL = aux;                            
    return aL;                            

TList InsEnd2(TList aL, Info e)

    TLista aux;
    aux = AlocCel(e);
    if(!aux) return aL;
    while(aL->next != NULL)
        aL = aL->next;
    // linking the node
    aL->next = aux;
    return aL;

【讨论】:

如何检查输入数据的错误?意思是如果有人输入 12345 作为名字,如何检查它并打印错误消息,我也想问年龄.. 对于给定的示例,所有应该在 AlocCel 函数中完成的事情可能吗?无论如何,您提出的问题非常基本。您可以使用 ctype.h 库中的 ASCII 值或函数,例如 isdigit(char) 或 isalpha(char)。您可能想查看此链接:en.wikipedia.org/wiki/Ctype.h【参考方案2】:

我不会给你代码,但是这些链接肯定会对你有所帮助。

http://en.wikipedia.org/wiki/Linked_list

http://richardbowles.tripod.com/cpp/linklist/linklist.htm

最好还是回去参考这本书(正如大卫所指出的,以 cmets 为单位)

【讨论】:

thnx 4 链接,,, 真的很不错,,,

为啥在 C 中需要使用 malloc 进行动态内存分配?

】为啥在C中需要使用malloc进行动态内存分配?【英文标题】:WhydoesmallocneedtobeusedfordynamicmemoryallocationinC?为什么在C中需要使用malloc进行动态内存分配?【发布时间】:2021-11-1610:04:05【问题描述】:我一直在阅读malloc用于动态内存... 查看详情

通过动态分配创建数组后,在C中通过realloc改变内存大小时出现问题

...:2021-01-2902:34:42【问题描述】:我正在练习C语言。我想使用动态分配,只使用我输入的字符串的大小作为内存,并检查输入的字符 查看详情

动态内存

到现在为止,我们编写的程序中所使用的对象都有着严格定义的生存期。全局对象在程序启动时分配,在程序结束时销毁;对于局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时销毁;局部static对象在第一次... 查看详情

c语言中啥是动态分配内存?

参考技术A就是当你的程序中使用数组或者是指针变量的时候,为了能够合理地利用内存空间来进行程序运行,自动开辟内存在栈区,最后用完这些内存再将其回收的方式。动态内存分配不像静态内存分配方法那样需要预先分配... 查看详情

为动态数据结构预分配内存

...问题/好奇。假设我想实现一个列表,例如我基本上可以使用cormenbook方法。其中解释了如何实现、插入、删除、键搜索等。但是,关于内存使用的问题没有说明。例如,如果我想在整数列表中插入一个整数。例如,我可以首先创... 查看详情

如何使用 malloc 为 C 中的结构创建动态内存分配?

】如何使用malloc为C中的结构创建动态内存分配?【英文标题】:HowdoIcreateadynamicmemoryallocationusingmallocforstructuresinC?【发布时间】:2018-11-0808:39:45【问题描述】:我想动态地为“标题”分配内存,因为我不知道标题会有多长时间。... 查看详情

动态内存分配

...以保证程序在运行过程中按照实际需要申请适量的内存,使用结束后还可以释放,这种在程序运行过程中申请和释放的存储单元也称为堆对象,申请和释放的过程一般称为建立和删除。new的功能:动态分配内存,或称为动态创建... 查看详情

在 C++ 中的 2D 动态内存分配数组中释放分配的内存

...近发布了一个关于此的问题,但这是一个不同的问题。我使用动态内存分配创建了一个二维数组,使用矩阵后,我们需要通过删除它来释放内存,我不明白为什么我们不能只使用delete[]matrix来删除它而不 查看详情

动态内存——动态内存与智能指针(代码片段)

...序块时被创建,在离开块时销毁。局部static对象在第一次使用前分配,在程序结束时销毁。  除了自动和static对象外,C++还支持动态分配对象。动态分配的对象的生命期与它们在哪里创建是无关的,只有当显示地被释放时,这... 查看详情

ch12动态内存

...或栈内存中的对象由编译器自动创建和销毁,static对象在使用前分配,程序结束时销毁,栈对象,定义在程序块运行时才存在。动态内存即自由空间或堆,程序用来存储动态分配的对 查看详情

如何将数据动态存储在C中的链表中?

...temp中。之后我想将数据存储在列表中,直到列表结束我使用 查看详情

c++ 动态内存分配使用“new”

】c++动态内存分配使用“new”【英文标题】:c++dynamicmemoryallocationusing"new"【发布时间】:2014-08-0121:15:42【问题描述】:我是C++新手,正在尝试自学(我有Java背景)。我可以使用new将这个动态内存分配概念分配给一个数组... 查看详情

c笔记--动态内存(代码片段)

...;它所需要的内存在编译时就被分配。但是,你也可以使用动态内存分配在运行时为它分配内存。为什么使用动态内存分配?当你声明数组时,你必须用一个编译时常量指定数组的长度。但是ÿ 查看详情

c笔记--动态内存(代码片段)

...;它所需要的内存在编译时就被分配。但是,你也可以使用动态内存分配在运行时为它分配内存。为什么使用动态内存分配?当你声明数组时,你必须用一个编译时常量指定数组的长度。但是ÿ 查看详情

c链表和动态内存分配

...而分配的内存恰好可用于该数据结构。 链表 1、使用动态内存存储  2、使用指针对其操作时,有两种方式。(1)、使用(*point).来进行操作。(2)、使用->来进行操作。通常使用第二种方式对结构体 查看详情

动态内存

...分配内存的指针,否则返回空指针NULL。  当内存不再使用时,应使用free()函数将内存块释放。  malloc的语法是:指针名=(数据类型*)malloc(长度),(数据类型*)表示指针.用free()释放内 查看详情

如何在 C++ 中动态分配数组

...方式释放:free(L);如何在C++中实现等效?具体来说,如何使用new和delete[]关键字?尤其是在创建/销毁链表节点,或创建和 查看详情

动态内存(代码片段)

...率很高,但是分配的内存容量有限。[3]从堆上分配,亦称动态内存分配,速度 查看详情