这个程序中s*=*(p+i)是都没意思

#include <stdio.h>
int main()
{
static int a[]={4,5,6};
int s,i,*p;
s=1;
p=a;
for(i=0;i<3;i++)
s*=*(p+i);
printf("%d\n",s);
sysem("PAUSE");
}

s*=*(p+i)相当于s*=a[i]即:s=s*a[i];
那么
for(i=0;i<3;i++)
s*=*(p+i);
就是s为a的3个元素之积
结果是:4*5*6=120
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-04
s*=*(p+i)是都没意思 这句话怎么理解?结果运行显示为120。追问

对不起,我打错字了。我的意思是s*=*(p+i)应该怎么理解?

追答

指针p指向数组初始位置,p+i就指向数组的第i个位置,*(p+i)就是该位置的值。

本回答被提问者采纳
第2个回答  2012-07-04
s*=*(p+i);
相当于s = s * (*(p+i))
*(p+i)是取值操作
第3个回答  2012-07-04
s*=*(p+i)
相当于
s = s * ( *(p+i) )

C语言中s*=*(p+i)是啥意思?
表达式中p应该是个指针,指向一个数组,如a[10]数组a的首地址传输给指针p,*(p+i)就是数组的第i个元素a[i]。表达式“s*=”就是s=s*()于是,该表达式即为s=s*(*(p+i))也就是s=s*a[i]表达式中第一个“*”是乘法运算 第二个“*”是指针运算符。

C语言(*(*p+i))是什么意思
(1)如果定义int *p,p=a[0];则P是指向二维数组首个元素的指针变量。p=a[0]等价于p=&a[0][0],p+1等价于a[1]等价于&a[1][0](2)如果定义int (*p)[4] ,p=a;则P是指向二维数组第0行的指针变量。a等价于&a[0],*p等价于a[0];所以**p等价于a[0][0];(*(*p+i)+j)等价于:数组元素a[...

检查一下这个程序哪错了,就这么点财富 不好意思啊~~
s的初值应该为0,不然最前面的1就加了两遍

...int s=0,i,P=&x[0] for (i=0:i<5,i++) s+=*(p=i)
main()int x [] =(1,2,5,8,7,9)int s=0,i,P=&x[0]for (i=0:i<5,i++)s+=*(p=i)printf 倒数第二行:s+=*(p=i);错误,应为:s+=*(p+i);一个int行整数怎么能直接付给一个指针呢,应该为p+i,表示从指针p开始的偏移量。那么,*p=1,是数组x的第一个值,for (i=0...

我想问一下这个程序中为什么不是s[i]=s[j] s[j]=s[i]
可以这么写,但是如果只是s[i]=s[j] s[j]=s[i]就需要在后面加上i++和j--了,所以代码之所以像上面那么写也是为了更精简

S=P*(1+i)^n利复怎么算的
1000×(1.15)次方5

程序框图的s,i,p,都是些什么意思,还有就是有什么技巧
K=0S=0 是赋值的意思 就是把0赋值给K,S K,S就等于0 然后判断S<100 如果是真,则S=S+2^S 否则,输出K的值注意是2的S次幂 S=S+2^S 第一步后S=0+2^0=1 S=1.而不是0 然后继续执行

问下 为什么结构体中可以用(p+i)->name来引用结构体成员 却不能使用p...
(p+i) 呢,是指针 p 所指向的地址+ i, 比如:假设有一个结构体类型 struct student ,struct student{ \/\/定义结构体 Struct student char[20] name;} struct student s[20]; \/\/定义一个结构体struct student 数组。struct student *p; \/\/定义一个结构体struct student指针。struct st...

关于C语言中这种情况下的问题如何理解?
top--,就是top先去干别的事,干完再减!如果是p=s[top--]的话,top首先是S数组的下标p=s[top]=s[1]=B.然后top在自减top=0;LZ补充的问题,我不明白是什么意思。s[size]是一个数组,那s[0]的地址就是整个数组的地址。int *p=s(s就是数组s的地址)。*p=A;*(p+1)=B;*(++p)=...

在数据库中s+=p,p*=i什么意思
s+=p相当于s=s+p;p*=i相当于p=p*i;

相似回答
大家正在搜