gpt4 book ai didi

c - 使用指针和动态结构时出错

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:25 24 4
gpt4 key购买 nike

我正在尝试学习结构和指针。我正在创建一个使用动态结构的程序。但我不明白为什么我的程序在运行“stampa”功能时会崩溃。我一遍又一遍地阅读它,但我仍然不明白错误在哪里。请你帮助我好吗?感谢并为糟糕的英语感到抱歉。

#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int day;
int month;
int year;
} DATE_T;
typedef struct
{
DATE_T date;
int codice;
int codiceProdotto;
int n;
} GESTIONE_T;
GESTIONE_T *gestione;
int index = 0;
void add(GESTIONE_T *gestione);
void stampa(GESTIONE_T *gestione);
int main()
{
printf("1 - Add ");
add(gestione);
printf("2 - Printf");
stampa(gestione);
return 0;
}
void add(GESTIONE_T *gestione)
{
gestione = (GESTIONE_T *)malloc((index + 1) * sizeof(GESTIONE_T));
if (gestione == NULL)
{
printf("Errore durante l'allocazione della memoria");
exit(EXIT_FAILURE);
}
printf("\nInserisci il tuo codice identificativo: ");
scanf("%d", &gestione[index].codice);
printf("\nInserisci il codice del prodotto: ");
scanf("%d", &gestione[index].codiceProdotto);
printf("\nInserisci il numero di oggetti venduti: ");
scanf("%d", &gestione[index].n);
printf("test 3 : %d", gestione[index].n);
index++;
printf("\nInserisci la data nel formato GG/MM/YY: ");
scanf("%d/%d/%d",
&gestione[index].date.day,
&gestione[index].date.month,
&gestione[index].date.year);
return;
}
void stampa(GESTIONE_T *gestione)
{
int i;
for (i = 0; i < index; i++)
printf("Code: %d - Codice prodotto: %d - Numero: ",
(gestione + index)->codice,
(gestione + index)->codiceProdotto /*gestione[0].n)*/);
return;
}

最佳答案

参数在 C 中按值传递,因此如果您想将指针作为参数传递给函数以便对其进行初始化,则需要添加另一个间接级别,即

void assign_pointer(T **p)
{
/* check p for null */
*p = malloc(count * sizeof **p);
}

您当前尝试在您的 add 函数中初始化 gestione,但它只初始化指针的本地副本。

关于c - 使用指针和动态结构时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26918086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com