编程语言C++。

#include<stdio.h>
#define N 8
void fun(int*x,int i)
{*x=*(x+i)+1;}
main()
{ int a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
for(i=0;i<N/2;I++)
{printf("%d",a[i]);}
printf("\n");
}

求详细的解析
程序运行输出结果,要详细过程

#include<stdio.h>
#define N 8
void fun(int*x,int i)
{*x=*(x+i)+1;}
main()
{ int a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
for(i=0;i<N/2;I++)
{printf("%d",a[i]);}
printf("\n");
}
估计你只是函数跳转看不懂,传参fun(a,2),那么指针x=p(即指针x指向数组p),*x表示数组的第一个元素a[0],*(x+i)表示a[i],即*x=*(x+i)+1;<=>a[0]=a[2]+1;即经过这个语句a[0]已经改变,即a[0]=4,数组a其它元素不变,对于后面的for(i=0;i<N/2;i++)表示输出a[0]~a[3]是个元素,即结果为:
4
2
3
4
建议:你的程序没有加任何输入后暂停的语句,会导致结果一闪而过,你可以在后面加上system("pause");暂停语句,以看清结果。
温馨提示:答案为网友推荐,仅供参考
相似回答