永发信息网

C语言,错得莫名其妙

答案:6  悬赏:80  手机版
解决时间 2021-07-21 23:02
  • 提问者网友:星軌
  • 2021-07-21 04:23
#include"stdio.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;
}
main(void)
{
seqStack *L;
createStack(L);
printf("%d",L->top);
getch();
}

为什么top不等于-1 那个大侠帮个忙
最佳答案
  • 五星知识达人网友:西风乍起
  • 2021-07-21 04:30

地址和值传递的问题


全部回答
  • 1楼网友:廢物販賣機
  • 2021-07-21 08:05
-------------------修改好的代码----------------------- #include <stdio.h> #include <stdlib.h> #define size 100 typedef struct { int a[size]; int top; } seqStack; void createStack(seqStack **L_Addr) { *L_Addr = (seqStack *) malloc(sizeof(seqStack)); (*L_Addr)->top = -1; } int main(void) { seqStack *L; createStack( &L); printf("%d\n", L->top); getchar(); free(L); return 0; } --------------------------------------
  • 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
因为你没有返回地址的值 传进去的时候只是把L的值进行了复制 并没有改变L的值 所以函数退出来以后 L依然没变化 帮你修改了一下 #include"stdio.h" #include "malloc.h" #include "conio.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; } main(void) { seqStack *L; createStack(L); printf("%d",L->top); getch(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯