dni-6ren">
gpt4 book ai didi

c - 传递 struct* 并在其他函数中加载该结构

转载 作者:行者123 更新时间:2023-11-30 17:56:33 26 4
gpt4 key购买 nike

它无法编译,我不知道我到底做错了什么。当我尝试这样做时:

(ultimo->siguiente)=nnodo; 

编译器不允许我这么做。两者都不起作用:

scanf("%d", &(nnodo->dni));

PD:baja和modif函数还没有完成,但它们不应该与主程序发生任何冲突。

<小时/>

编译器输出(Visual Studio 2010):

错误 2 错误 C2037:“siguiente”左侧指定未定义的结构/union “stru”c:\documents and settings\emiliano\desktop\asdc.c 52 1 abm

错误 3 错误 C2037:“dni”左侧指定未定义的结构/union “stru”c:\documents and settings\emiliano\desktop\asdc.c 55 1 abm

4 IntelliSense:不允许指向不完整类类型的指针 c:\documents and settings\emiliano\desktop\asdc.c 52 3 abm

5 IntelliSense:不允许指向不完整类类型的指针 c:\documents and settings\emiliano\desktop\asdc.c 55 15 abm

<小时/>

我认为我的 typedef 正确,但我真的不知道。

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

typedef struct stru* pstru;

typedef struct{
int dni;
pstru siguiente;
}stru;



pstru alta(pstru ultimo);
pstru baja(pstru ultimo);
pstru modif(pstru ultimo);
int menu(pstru ultimo);

int main(){
pstru ultimo;
ultimo=(pstru)malloc(sizeof(stru));

menu(ultimo);
return 0;
}

int menu(pstru ultimo){

int opc;
printf("Para alta (1), para baja (2), para modif (3), para salir (4)\n");
scanf("%d", &opc);

switch(opc){
case 1:
ultimo=alta(ultimo);
break;
case 2:
ultimo=baja(ultimo);
break;
case 3:
ultimo=modif(ultimo);
break;
case 4:
return 0;
}
menu(ultimo);
return 0;
}

pstru alta(pstru* ultimo){
pstru nnodo;
nnodo=(pstru)malloc(sizeof(stru));
(ultimo->siguiente)=&nnodo;

printf("Ingrese DNI\n");
scanf("%d", &(nnodo->dni));

ultimo=nnodo;

return ultimo;
}

pstru baja(pstru ultimo){
return ultimo;
}

pstru modif(pstru ultimo){
return ultimo;
}

最佳答案

在 C 语言中,你不能这样做:

typedef struct stru* pstru;

typedef struct
{
int dni;
pstru siguiente;
} stru;

您定义了一个未标记的结构类型并将其命名为 stru,但 typedef struct stru *pstru; 引用了不同的标记结构类型 struct stru,不完整。

您可能需要:

typedef struct stru *pstru;

typedef struct stru
{
int dni;
pstru siguiente;
} stru;

编译应该没有问题。

<小时/>

在 C++ 中,您不需要第二个 typedef;你可以简单地写:

typedef struct stru *pstru;

struct stru
{
int dni;
pstru siguiente;
};

并且将定义类型stru

关于c - 传递 struct* 并在其他函数中加载该结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13446992/

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