这是逗号运算和指针的题吗?指针如果是代入计算如何计算呢?只按照单纯代入不做其他任何运算结果将是4#2#6#0#?
#include<stdio.h>
int c;
int func(int *a,int b)
{
c=(*a)*b;
*a=b-1;
b++;
return(*a+b);
}
main()
{
int a=4,b=2,p=0;
p=func(&a,b);
printf("%d#%d#%d#%d#",a,b,c,p);
}
这是逗号运算和指针的题吗?指针如果是代入计算如何计算呢?只按照单纯代入不做其他任何运算结果将是4#2#6#0#?
#include<stdio.h>
int c;
int func(int *a,int b)
{
c=(*a)*b;
*a=b-1;
b++;
return(*a+b);
}
main()
{
int a=4,b=2,p=0;
p=func(&a,b);
printf("%d#%d#%d#%d#",a,b,c,p);
}
哪有啥逗号运算啊?这就是考察参数传递,以及返回参数和值参的不同
func第一个参数使用指针类型,那么在函数中对 * a的修改,实际都是对main中变量a的值的修改。但第二个参数由于是值参,所以函数内对b的修改,和main中的变量b毫无关系。因此输出的a受到函数中*a = b-1影响,a的值被修改为2-1=1
c是全局变量,在函数中被修改为c=4 * 2= 8
函数返回值为1+2=3