我不能在c中将一个结构分配给另一个结构

时间:2015-09-28 00:52:25

标签: c struct

我有2个结构,我想将一个结构分配给另一个结构,但是当我打印结果时,它会打印废话,功能:" ver_tope"负责这样做,我做得怎么样?,这是代码:

#include <stdio.h>
#include <stdlib.h>
#define TAM 4

typedef struct{
        char nomyap[40];
        int edad;

}t_info;

typedef struct {
    t_info pila [TAM];
    int tope;

}t_pila;

void ver_tope(const t_pila *p, t_info *d);

int main()
{
    t_pila pila;
    t_info info;
    //I CHARGE BOTH STRUCTS

    ver_tope(&pila, &info);

    return 0;
}

void ver_tope(const t_pila *p, t_info *d)
{
   *d = p->pila[(p->tope)-1];
    return ;
}

2 个答案:

答案 0 :(得分:0)

尝试在main()ex:

中为pila.tope添加初始化
...    //I CHARGE BOTH STRUCTS
pila.tope =2;
ver_tope(&pila, &info);
...

停止了分段错误...

答案 1 :(得分:0)

int main()
{
    t_pila pila;
    t_info info;
    ver_tope(&pila, &info);
    return 0;
}

您尚未初始化任何变量。由于pila是作业的来源,您可以执行以下操作:

int main()
{
    t_pila pila = { 0 };
    pila.tope = 1;
    t_info info;
    ver_tope(&pila, &info);
    return 0;
}

此处我默认初始化pila,然后将其tope成员设置为1。自info分配ver_tope以来,我没有初始化ver_tope。如果将t_info转换为返回{{1}}的函数,则会更清楚。