| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 23951 人关注过本帖
标题:怎么是报错:subscript requires array or pointer type?
只看楼主 加入收藏
leathe
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-5
收藏
 问题点数:0 回复次数:3 
怎么是报错:subscript requires array or pointer type?
x=pow(t[i]-t,3)*dx[i-1]/pow(h[i],2)
-pow(t-t[i-1],2)*(t[i]-t)*dx[i]/pow(h[i],2)
+pow(t[i]-t,2)*(2(t-t[i-1])+h[i])*poix[i-1]/pow(h[i],3)
+pow(t-t[i-1],2)*(2(t[i]-t)+h[i])*poix[i]/pow(h[i],3);


在编译的时候怎么还是说:subscript requires array or pointer type
t[i],h[i],dx[i-1],poix[i-1]我已经定义为全局变量,x,t为局部变量
搜索更多相关主题的帖子: array pointer requires subscript type 
2006-03-05 20:22
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
从你的这个式子来看, 你定义了一个数组,t 为这个数组的首地址,那么 t[i]-t 这种写法是错的,因为 t[i] 是数组中位于i 位的一个具体的数,而 t只是一个地址, 它们之间怎么可以做算术运算呢? 你可以这么写:t[i] - t[0] ,
同样的 t-t[i-1] , t-t[i-1] 这样的写法都是错的。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-03-05 21:55
leathe
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-5
收藏
得分:0 
我是这样定义的
//全局变量及其初始化
const int n=360; //输入型值点的个数
COLORREF colb; //背景颜色变量
double HI,poix[n],poiy[n],t[n],h[n],dx[n],dy[n];
int xz0; //线的粗细变量
CSpline1View::CSpline1View()
{
// TODO: add construction code here
int i;
for(i=0;i<n;i++)
{
poix[i]=i;
poiy[i]=i;
t[i]=0;
h[i]=0;
dx[i]=0;
dy[i]=0;
}
colb=RGB(220,220,220);
HI=38; //win2000:38; win98:25
xz0=4;
}



void CSpline1View::huatu0(CDC*pDC)
{
int i,j;
double t,x,y;
quxian0(pDC);//画坐标
pDC->LineTo(int(HI*poix[0]),int(HI*poiy[0]));
for(i=0;i<n;i++)
{
for(j=1;j<=1000;j++)
{
t=t[i]+j*h[i]/1000.;
x=pow(t[i]-t,3)*dx[i-1]/pow(h[i],2)
-pow(t-t[i-1],2)*(t[i]-t)*dx[i]/pow(h[i],2)
+pow(t[i]-t,2)*(2(t-t[i-1])+h[i])*poix[i-1]/pow(h[i],3)
+pow(t-t[i-1],2)*(2(t[i]-t)+h[i])*poix[i]/pow(h[i],3);
y=pow(t[i]-t,3)*dy[i-1]/pow(h[i],2)
-pow(t-t[i-1],2)*(t[i]-t)*dy[i]/pow(h[i],2)
+pow(t[i]-t,2)*(2(t-t[i-1])+h[i])*poiy[i-1]/pow(h[i],3)
+pow(t-t[i-1],2)*(2(t[i]-t)+h[i])*poiy[i]/pow(h[i],3);
pDC->LineTo(int(HI*x),int(HI*y));
}
}
}
是不是由于我定义的数组t[i]和变量t是同名的缘故?
2006-03-06 09:43
leathe
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-5
收藏
得分:0 
问题解决!
谢谢楼主提示,这个问题解决!
不过,编译的时候出现了一个问题,请赐教:
void CSpline1View::huatu0(CDC*pDC)
{
int i,j;
double s,x,y;
quxian0(pDC);//画坐标
pDC->LineTo(int(HI*poix[0]),int(HI*poiy[0]));
for(i=0;i<n;i++)
{
for(j=1;j<=1000;j++)
{
s=t[i]+j*h[i]/1000.;
x=pow(t[i]-s,3)*dx[i-1]/pow(h[i],2)
-pow(s-t[i-1],2)*(t[i]-s)*dx[i]/pow(h[i],2)
-> +pow(t[i]-s,2)*(2(s-t[i-1])+h[i])*poix[i-1]/pow(h[i],3)
-> +pow(s-t[i-1],2)*(2(t[i]-s)+h[i])*poix[i]/pow(h[i],3);
y=pow(t[i]-s,3)*dy[i-1]/pow(h[i],2)
-pow(s-t[i-1],2)*(t[i]-s)*dy[i]/pow(h[i],2)
-> +pow(t[i]-s,2)*(2(s-t[i-1])+h[i])*poiy[i-1]/pow(h[i],3)
-> +pow(s-t[i-1],2)*(2(t[i]-s)+h[i])*poiy[i]/pow(h[i],3);
pDC->LineTo(int(HI*x),int(HI*y));
}
}
}
->提示:term does not evaluate to a function
如何解决?
2006-03-06 09:54
快速回复:怎么是报错:subscript requires array or pointer type?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031861 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved