2 haokeaiaheng haokeaiaheng 于 2016.04.10 17:33 提问

关于结构体指针什么时候申请空间的问题 40C

/*顺序栈的初始化*/

#include
#include
#include

#define stack_size 3
#define error -1
typedef struct student{
int num;
char name[10];//定义数组时开辟了空间
}student,*Student;//栈中的元素
typedef struct linkstack
{
student children[100];
int top;
int base;
int stacksize;
}stack,*Stack;//栈的特性

stack* initstack(int stasize)
{
int i;
stack List;
stack* list;
List.base=0;
List.top=0;
List.stacksize=stasize;//初始化一个空栈

for(i=0;i<stasize;i++)
{
    printf("请输入姓名");
    scanf("%s",((List.children[i]).name));//数组指针的用法
    printf("请输入学号");
    scanf("%d",&List.children[i].num);
}
List.top=stasize;
list=&List;//应该是这附近出现问题
return (list);

}

int push(stack* p,Student x)
{
if(p->top-p->base==p->stacksize)
p->stacksize++;
p->top=p->top+1;
//p[statype->top]=*x;//可能有问题,关于结构体赋值的问题
//p[statype->top].name=x->name;
strcpy(p->children[p->top].name,x->name);
p->children[p->top].num=x->num;

}

int pop(Stack statype)
{
if(statype->top=statype->base)
exit(error);
statype->top=statype->top-1;
return 0;
}

int main(void)
{
stack* initstack(int stasize);
int push(stack* p,Student x);
//int pop(Stack statype);

stack* list=initstack(stack_size);
Student x;
x=(student*)malloc(sizeof(student));
strcpy(x->name,"liuyun");
push(list,x);
return 0;

}


4个回答

CSDNXIAOD
CSDNXIAOD   2016.04.10 17:42

结构体指针问题
结构体指针问题
有关结构体中的指针问题
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

haokeaiaheng
haokeaiaheng   2016.04.10 17:58

我应该是initstack返回值是出现了问题,不知道为什么,谢谢

u012155923
u012155923   2016.04.10 18:00

在用的时候申请,main函数里面

zhaoxin19890523
zhaoxin19890523   2016.04.14 22:27

List.top=stasize,应该是List.top=stasize-1

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
定义一个结构体指针需要分配存储空间?
前言 问题的来源于在学数据结构的时候,C++的语法和C语言的语法竟然不一样。 1.首先函数的参数有两种传递方式,一个是值传递,一个是地址传递。当指针作为参数传递的时候,即为地址传递,但C++写的时候需要加&引用符号,而C语言却不用。 2.本文谈的是这个问题,即为当声明一个结构体指针时,为什么还有new(C++)或者malloc()这种语句,一直搞不清楚,后台问bb,然后百度了一下,才明白
为什么链表操作过程中对于结构体指针,都要用malloc来开辟内存空间
int a=0和int a区别 前者是在内存中开辟了一块叫做a的内存空间,里面存放0;后者表示将要开辟内存空间了,但是还没有开辟 简单的说,int a=0相当于建了一座仓库,然后再里面装了货物 而 int a相当于拿到了一块地契,留着以后要建仓库用的
定义结构体指针,内存空间分配问题
//下面仅仅是定义一个类型,不会产生变量,所以不存在分配空间的问题 struct data {     int i;     int j; }; void main(void) {     struct data dat1; //定义一个struct data
定义结构体指针时,有没有同时分配存储空间?
前言 问题的来源于在学数据结构的时候,C++的语法和C语言的语法竟然不一样。 1.首先函数的参数有两种传递方式,一个是值传递,一个是地址传递。当指针作为参数传递的时候,即为地址传递,但C++写的时候需要加&引用符号,而C语言却不用。 2.本文谈的是这个问题,即为当声明一个结构体指针时,为什么还有new(C++)或者malloc()这种语句,一直搞不清楚,后台问bb,然后百度了一下,才明白
关于为结构体指针申请内存的问题
之前在实现单链表的时候出现的一个问题 点击打开链接。 比如创建一个结构体 struct List { int data; struct List* link; }; 如果我直接声明一个结构体指针 List* p; 那么对这个指针进行操作的话一种是把一个Lis类型的变量的指针赋值给p; 另一种是为这个指针动态申请内存。 但是如果我声明一个结构体的变量的时候 List
结构体指针内存——指针数组——字符串指针内存申请
前几天用的结构体,结构体内还包含有结构体指针和数组以及指向字符串的指针,发现自己对这方面的东西还很容易犯错,故现在讲其中容易出错的地方写出来,分享给大家也方便自己日后查看。 typedef struct { char name[50]; char job[50]; int age; int people_id; } peopleInfo; typedef struct
结构体定义、结构体指针、内存分配、指针、结构体形参的深入理解
/*********结构体定义、结构体指针、内存分配、指针、结构体形参的深入理解****  作者: 攀枝花学院 袁伟明  邮箱:1040185409@qq.com  说明:此程序为深入学习数据结构时候,对于数据结构最重要的基础(结构体、指针、内存分配) 方面的一些理解,我自己通过这段程序说明一些自己得到的结论;希望对看到这篇程序的c爱好者 有帮助,如果有理解错误的地方希望各位联系
C\C++中结构体变量与结构体指针内存分配问题
A a[3];  a是A型的,有3个,当然分配A乘3大小的空间 A* a;    a是A*型的,当然只分配A*大小的空间,而不会分配A大小的空间 好像跟你说的不太一样,结构体数组的话,我在课本里看到的确不用再次申请空间了啊[/quote] 结构体变量分配结构体本身大小的空间,结构体指针分配4个字节,其实任何类型的指针都是分配四个字节的指针空间。 所以: A a[3]; //a里面
结构体指针数组 内存分配 释放
#include #include #include #include #include using namespace std;typedef class student{public:intnumber;char*name;}STU, *LPSTU;vectorvec;vector::iterator iter;mapmapstu;map::iterator itermap;void main(void){char* str1 = "YaoMing";char* str2 = "T_MAC";ch
C/C++ - 结构体实际申请的空间
C/C++ - 结构体实际申请的空间 如下的结构体,sizeof()大小,实际申请的空间以及理论上申请最佳空间 struct Spot { int x; int y; bool visible; int red; int blue; int green; double alpha; bool cleaned; };