
C语言指针疑问。
键盘输入2个数m,n求第m个数到第n个数的和。本人不理解为什么下面voidmain前的语句意思。特别是i=0那里如果我输入的数是m=3,n=7的时候,我的理解是i0一直加...
键盘输入2个数m,n 求第m个数到第n个数的和。本人不理解为什么下面void main前的语句意思。特别是i=0那里 如果我输入的数是m=3,n=7的时候,我的理解是i0一直加到i7 .可真实的是i3加到i7,有高手解答下详细的程序过程吗?当我输入m=3,n=7的时候.
#include<stido.h>
{
int i,s=0;
for(i=0;i<n;i++,q++)
s+=*q;
return s;
}
void main()
{
int m,n,a[10]={1,2,3,4,5,6,7,8,9,10};
int *p;
printf("Please input m and n(m<n<10):\n");
scanf("%d,%d",&m,&n);
p=a+m-1;
printf("%d\n",sum(p,n-m+1));
} 展开
#include<stido.h>
{
int i,s=0;
for(i=0;i<n;i++,q++)
s+=*q;
return s;
}
void main()
{
int m,n,a[10]={1,2,3,4,5,6,7,8,9,10};
int *p;
printf("Please input m and n(m<n<10):\n");
scanf("%d,%d",&m,&n);
p=a+m-1;
printf("%d\n",sum(p,n-m+1));
} 展开
2个回答
展开全部
a[ i ]这个数组,其实可以理解成一个指向数组的指针.它可以写成*( a + i )
你下面写的 p = a + m -1; 可以写成 p = *( a + m - 1 ); 也就是 p = a[ m -1 ];这时候 p 其实就是a[2]
传参的时候把指针 p 传过去了.还有 n - m + 1,也就是 7 - 3 + 1 ,也就是 5 ;
传参过去以后, q = a[ 2 ] 上面解释过了.n = 5
sum函数加出来的结果是从a[ 2 ]加到a[ 7 ] ,也就是 3 + 4 + 5 + 6 + 7 = 25.
希望你满意.
你下面写的 p = a + m -1; 可以写成 p = *( a + m - 1 ); 也就是 p = a[ m -1 ];这时候 p 其实就是a[2]
传参的时候把指针 p 传过去了.还有 n - m + 1,也就是 7 - 3 + 1 ,也就是 5 ;
传参过去以后, q = a[ 2 ] 上面解释过了.n = 5
sum函数加出来的结果是从a[ 2 ]加到a[ 7 ] ,也就是 3 + 4 + 5 + 6 + 7 = 25.
希望你满意.
追问
我输入的是3 和7 怎么就变传n=5过去了。可以写出它累加和的过程吗?那样我看得清楚点。初学者请包涵。
追答
printf("%d\n",sum(p,n-m+1)); 这里是调用sum函数的.这里传了两个参数:一个是p也就是指针.一个是( n - m + 1 ),你在上面输入的时候,m 输入的是3,n输入的是7. ( n - m + 1 ) = ( 7 - 3 + 1 ) = 5.
{
int i,s=0;
for(i=0;i<n;i++,q++)
s+=*q;
return s;
} 这个你没有写全,我猜你应该是这样写的.
int sum ( int* p, int n ) //在这个地方,*p = a[ 2 ], n = 5. 这里的值是从main函数传参过来的.
{
int i,s=0;
for(i=0;i<n;i++,q++)
s+=*q;
return s;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询