重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
pop函数 出栈 ;push函数 进栈。
在贵阳等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、做网站 网站设计制作按需定制设计,公司网站建设,企业网站建设,品牌网站制作,成都营销网站建设,外贸网站制作,贵阳网站建设费用合理。
相当于有一个箱子,push函数是把东西放进去;而pop函数则相反,是把东西从那箱子里拿出来。
你这是定义的毛结构体,x根本不是什么类型,而是一个指针变量,指向结构体node的
你现在纠结的是地址变量前边加上之后,就搞不清了。
是取地址,也就是存放符号之后的数据的地址。所有数据在内存中都有一个地址(包括指针)。这下你应该明白了在x前面加上符号后,也就是取了x这个地址数据存放的位置,可能有点绕,这个自己好看看就行了。
还有一点就是我第一眼看你的题目还以为是函数之间进行值传递和地址传值的区别呢,
例:int a;
p=a
如果你把a这个参数传到另一个函数中的话,在原来的函数中是不能改变其值的。不信你自己测试。
你把p这个值传进去了之后,也不能改变p的值,但是能改变*p的值,也就是a的值。这样我们想在其它函数里改变a的值的话,就在a前边加个这样就能改变a的值,但是在用的时候要加*
#includestdio.h
// #includemath.h gys算法中可以将i赋值为根号min
int gys(int m,int n);//函数声明
int gbs(int m,int n);
void main()
{
int a,b,flag,flag1;
scanf("%d%d",a,b);
flag=gys(a,b);
flag1=gbs(a,b);
printf("最大公约数为%d 最小公倍数为%d\n",flag,flag1);
}
int gys(int m,int n)
{
int min;
min=m;
if(minn) min=n;
for(int i=min;i0;i--)//这里i可以开始赋值为根号min, 算法就更好了
if((m%i==0)(n%i)==0)
return i;//返回公约数i
}
int gbs(int m,int n)
{
return (m*n/gys(m,n));//数学公式
}
注意一下这个函数void insert (char *family, char *first, char *address, char *phonenumber, phoneptr head)
{head=newentry (family, first, address, phonenumber,head);}
,你的head是一个什么我不太清楚,但是由于函数是值传递的,你的head仅仅是传递了一个值的拷贝而已 ,而里面函数的操作也是对于这个拷贝进行的,而这个函数没有返回值,当你直接调用的时候当然head不会指向任何东西了,但是你要是调用head=newentry (family, first, address, phonenumber,head);之后,那么因为这个函数有一个返回值,虽然和那个的作用是一样的,但是这个函数把返回值直接赋值给了你定义的那个变量,而不是拷贝的变量,所以head就会有指向了,要是要用一个void的函数来实现的,我觉得应该这样子:
void insert (char *family, char *first, char *address, char *phonenumber, phoneptr *head)
{* head=newentry (family, first, address, phonenumber,head);}
要是类型不匹配那你再转换一下,反正就是要吧head的地址传进去,然后再对它的值,一定要是值,因为你传入的也是一个地址的拷贝,如果仅仅对地址操作是没有作用的,只能对地址指向的值的操作才能改变的