C语言栈的建立。
答案:3 悬赏:70
解决时间 2021-02-11 00:09
- 提问者网友:控制庸俗
- 2021-02-10 17:53
C语言栈的建立。
最佳答案
- 二级知识专家网友:颜值超标
- 2021-02-10 19:10
你是想知道为什么在ddd里面修改了传入参数p的值,在main函数的printf里没有体现出来吧??
你定义的函数的参数传递方式是值传递,而不是引用传递,
所以即便你在ddd里修改了传入参数p的值,这个改变也不会反应在ddd函数调用以外。
如果想要达到ddd里面修改了,main也要看到修改的效果,就用引用。
将函数声明为:void ddd(aaa* &head,int n);
这个问题在debug的时候看一下函数调用前后,p的值有没有变化就能看出来。
多看看内存, 多分析分析问题。
另外,强烈谴责这种编码风格,,, aaa,bbb,ccc,ddd什么的,最讨厌了。 都是跟谭浩强学的吧。。。 上来就一堆abc, ijk什么的, 等到工作的时候就惨了。。。
你定义的函数的参数传递方式是值传递,而不是引用传递,
所以即便你在ddd里修改了传入参数p的值,这个改变也不会反应在ddd函数调用以外。
如果想要达到ddd里面修改了,main也要看到修改的效果,就用引用。
将函数声明为:void ddd(aaa* &head,int n);
这个问题在debug的时候看一下函数调用前后,p的值有没有变化就能看出来。
多看看内存, 多分析分析问题。
另外,强烈谴责这种编码风格,,, aaa,bbb,ccc,ddd什么的,最讨厌了。 都是跟谭浩强学的吧。。。 上来就一堆abc, ijk什么的, 等到工作的时候就惨了。。。
全部回答
- 1楼网友:努力只為明天
- 2021-02-10 21:16
#include<stdio.h>
#include<stdlib.h>
typedef struct lnode{
int data;
struct lnode *next;}aaa;
aaa *bbb(aaa *head);
void ddd(aaa *head,int n);
void main()
{
aaa head,*p,*q;
p=bbb(&head);
ddd(p,5);
printf("%d\t",p->data);
}
void ddd(aaa *p,int n)
{
aaa *head;
head=new aaa;
head->data=n;
head->next=p;
p=head;
printf("%d\t",p->data);
}
aaa *bbb(aaa *head)
{
head->next=NULL;
head->data=5; //你head->data没有赋值啊
return head;
}
- 2楼网友:木子香沫兮
- 2021-02-10 20:24
#include <stdio.h>
#include <stdlib.h>
typedef struct _stack {
int size;
int* base;
int* sp;
} stack;
void init(stack* s, int n)
{
s->base = (int*)malloc(sizeof(int)*n);
s->size = n;
s->sp = s->base;
}
int push(stack* s, int val)
{
if(s->sp - s->base == s->size) {
puts("overflow");
exit(1);
}
return *s->sp++ = val;
}
int pop(stack* s)
{
if(s->sp == s->base) {
puts("underflow");
exit(2);
}
return *--s->sp;
}
int empty(stack* s)
{
return s->sp == s->base;
}
void clean(stack* s)
{
if(s->base)
free(s->base);
}
int main(void)
{
stack s;
int i;
init(&s, 100);
for(i = 0; i < 10; ++i)
printf("%d ", push(&s, i));
putchar('\n');
while(!empty(&s))
printf("%d ", pop(&s));
clean(&s);
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯