求助,关于指针和数组
cpp第十章数组与指针 编程练习 1关于指针不明白..
for(pfy = pfm, subtot = 0; pfy < rain + YEARS; pfy++)
这样写编译能通过,但是会给个警告
如果我写成
*pfy = pfm , 就会报错
pfy是 12个float长度的指针, *pfy不是指向rain[0][0] 的吗?
程序代码:/*程序目标:
* 计算出年降水总量 , 年降水平均量 , 月降水平均量 .
*/
#include <stdio.h>
#define MONTHS 12
#define YEARS 5
int main(void)
{
const float rain[YEARS][MONTHS] = {
{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},
{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},
{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},
{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},
{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}};
int year, month;
float subtot, total;
const float (*pfy)[12], * pfm;
printf(" YEAR RAINFALL (inches)\n");
for(pfy = rain, year = 0, total = 0; pfy < rain + YEARS; year++, pfy++)
{
for(subtot = 0, pfm = *pfy; pfm < *pfy + MONTHS; pfm++) /*这里的 pfm = *pfy 和下面的 *pfy = pfm 有什么区别??*/
subtot += *pfm;
printf("%5d %15.1f\n", 2000 + year, subtot);
total += subtot;
}
printf("\nThe yearly average is %.1f inches.\n\n", total/YEARS);
printf("MONTHLY AVERAGES:\n\n");
printf(" Jan Feb Mar Apr May Jun Jul Aug ");
printf("Sep Oct Nov Dec\n");
for(pfm = rain[0]; pfm < rain[0] + MONTHS; pfm++)
{
for(pfy = pfm, subtot = 0; pfy < rain + YEARS; pfy++) /* 这样写会有警告,但程序可以运行..如果写成 *pfy = pfm 就会报错 ,不明白*/
subtot += **pfy;
printf("%4.1f ", subtot/YEARS);
}
printf("\n");
return 0;
}










