C语言,错得莫名其妙
- 提问者网友:星軌
- 2021-07-21 04:23
#define size 100
typedef struct
{
int a[size];
int top;
}seqStack;
void createStack(seqStack *L)
{
L=(seqStack*)malloc(sizeof(seqStack));
while(L==NULL)
L=(seqStack*)malloc(sizeof(seqStack));
L->top=-1;
}
main(void)
{
seqStack *L;
createStack(L);
printf("%d",L->top);
getch();
}
为什么top不等于-1 那个大侠帮个忙
- 五星知识达人网友:西风乍起
- 2021-07-21 04:30
地址和值传递的问题
- 1楼网友:廢物販賣機
- 2021-07-21 08:05
- 2楼网友:第幾種人
- 2021-07-21 07:21
typedef struct { int a[size]; int top; }seqStack;
- 3楼网友:西岸风
- 2021-07-21 06:25
#include"stdio.h" #include <stdlib.h> #define size 100 typedef struct { int a[size]; int top; }seqStack; void createStack(seqStack **L) { *L=(seqStack*)malloc(sizeof(seqStack)); while(*L==NULL) *L=(seqStack*)malloc(sizeof(seqStack)); (*L)->top=-1; } void main(void) { seqStack *L = NULL; createStack(&L); printf("%d",L->top); }
请在仔细的看一下指针的操作。
L=(seqStack*)malloc(sizeof(seqStack));这里是让L重新指向了一个地址空间,所以你下面改变的值不是你期望的实参的值。 如果要在函数内分配地址的话,请试着学习一下2级指针
- 4楼网友:往事隔山水
- 2021-07-21 05:57
这样设计合理点吧,你参考下
#include"stdio.h" #include<stdlib.h> #include<conio.h> #define size 100 typedef struct { int a[size]; int top; }seqStack;
seqStack *createStack() { seqStack *L; L=(seqStack*)malloc(sizeof(seqStack)); while(L==NULL) L=(seqStack*)malloc(sizeof(seqStack)); L->top=-1; return L; }
void main(void) { seqStack *L; L=createStack(); printf("%d",L->top); getch(); }
- 5楼网友:等灯
- 2021-07-21 05:03