函数的传值
以前以为函数传值搞懂了,过了一段时间没写程序了。现在写程序满满的都是错误,今天写一个关于栈的函数结果在传值的时候有些变量的值搞的我和自己想的有所不同,下面是代码麻烦解释一下。#define MAXE 10
typedef struct name
{
char build[MAXE][21];
int top;
}luxian;
int push(luxian *lu2)
{
char name[21];
if(lu2->top==MAXE-1)
{
return(0);
}
printf("请输入地址\n");
scanf("%s",name);
lu2->top++;
printf("%d\n",lu2->top);
strcpy(lu2->build[lu2->top],name);
return(1);
}
当我在主函数中传一个luxian类型的指针(p)给push函数的时候,当我调用完了这函数的时候其中p->build当前的字符串是刚刚调用函数中输入的,可是p->top的值却没有改变,怎么回事?
我以前理解的是一个结构体变量的地址传过去了这个结构体当中的变量在被调用函数里修改了其中的值也会随着被修改。可经过上面的例子的实践这个结论明显是错的!
麻烦各位老手说一下这函数传值的具体结论,麻烦详细点,深入点。(如果可以的话可以和我讲一下系统在调用函数时的变量在内存栈中的变化)谢谢!