1. 此程序的运行结果为;10,20,3. 其中主函数K的值为3,没有被改变,虽然SP函数是按值传递,但在sp函数中指针a被重新定义为b的地址。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define N 20
void sp(int *a)
{
int b=2;
a=&b;
*a=*a*5;printf("%d,",*a);
*a=*a*2;
printf("%d,",*a);
}
void main()
{ int k=3;
sp(&k);
printf("%d\n",k);
system("pause");
}
2. 此函数的运行结果为15,4,15,因为K的地址经过函数sp,*a=*a*5,但随后a指针被赋予b地址,故K的值最终为15
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define N 20
void sp(int *a)
{
int b=2;
*a=*a*5;printf("%d,",*a);
a=&b;
*a=*a*2;
printf("%d,",*a);
}
void main()
{ int k=3;
sp(&k);
printf("%d\n",k);
system("pause");
}
3.此程序运行结果为15,2,30 ,k因为经过*a*5*2,最终结果变为了30.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define N 20
void sp(int *a)
{
int b=2;
*a=*a*5;printf("%d,",*a);
*a=*a*2;
a=&b;
printf("%d,",*a);
}
void main()
{ int k=3;
sp(&k);
printf("%d\n",k);
system("pause");
}