requiresC语言subscript requires array or pointer type错误

requires  时间:2022-03-01  阅读:()

subscript requires array or pointer type

下标表达式,形如p[i],等价于*(p+i),其中+是指针加法,数值上相当于+ sizeof(*p) * i。“多维”的下标表达式如p[i][j],由结合性等价于(p[i])[j],即*(p[i]+j),也就是*(*(p+i)+j)。[]和一元*操作符的操作数要求为指针类型,可以是数组名,但不能是int。 LZ的函数fun(int *)中,p[i]或p[j]得到一个int而不是数组或指针,p[i][j]或p[j][i]这样的表达式是非法的。 LZ问题的解决方案:fun函数头改为void fun(int (*p)[3])或void fun(int p[][3]);另外,main里面的int *p=a;改为int (*p)[3]=a;。 注: 1. int(*)[3]是指向int[3]这个数组类型的指针的类型,int(*p)[3]是这种类型的一个名称为p的对象。 2. C中没有多维数组,所谓多维数组,是指数组的数组,存储器中不保存各维的长度。因此多维数组作为函数参数传递时只有第一维可以省略(可以退化为对应的指针),因为数组不保存计算下标的必要信息,除了第一维以外的剩余长度必须在编译时确定,以进行下标计算。 ==== [原创回答团]

C语言subscript requires array or pointer type错误

#include<stdio.h> void main() { double h[10][10]; int i,j,k,r,n,p[50],q,count; double s[10],l[10][10],u[10][10],b[10],d[10],a1[10],x[10],y[10],t; for(k=0;k<3;k++) { scanf("%d",&n); printf("n=%d ",n); for(i=0;i<n;i++) y[i]=1; for(i=0;i<n;i++) for(j=0;j<n;j++) h[i][j]=1.0/(i+j+1); for(i=0;i<n;i++) { b[i]=0; for(j=0;j<n;j++) b[i]=b[i]+h[i][j]*y[j]; } for(count=0;count<10;count++) { for(r=0;r<n;r++) { for(i=r;i<n;i++) { s[i]=h[i][r]; for(q=1;q<=r-1;q++) s[i]=s[i]-l[i][q-1]*u[q-1][r]; h[i][r]=s[i]; } t=s[r]; p[r]=r-1; for(q=r;q<n;q++) if(s[q]>t) { t=s[q]; p[r]=q; } for(i=0;i<n;i++) { t=h[r][i]; h[r][i]=h[p[r]][i]; h[p[r]][i]=t; } h[r][r]=s[r]; u[r][r]=s[r]; for(i=r;i<n;i++) { l[i][r]=h[i][r]*1.0/h[r][r]; h[i][r]=l[i][r]; u[r][i]=h[r][i]; for(q=0;q<r-1;q++) u[r][i]=u[r][i]-l[r][q]*u[q][i]; h[r][i]=u[r][i]; } } for(i=0;i<n-1;i++) { q=p[i]; if(i==q) continue; else { t=b[i]; b[i]=b[q]; b[q]=t; } } for(i=1;i<n;i++) { for(q=0;q<i-1;q++) b[i]=b[i]-l[i][q]*b[q]; } for(i=n-2;i>=0;i--) { for(q=i;q<n;q++) b[i]=b[i]-u[i][q]*b[q]; b[i]=b[i]*1.0/u[i][i]; } b[n-1]=b[n-1]*1.0/u[n-1][n-1]; for(i=0;i<n;i++) x[i]=b[i]; for(i=0;i<n;i++) for(j=0;j<n;j++) h[i][j]=1.0/(i+j+1); for(i=0;i<n;i++) { b[i]=0; for(j=0;j<n;j++) b[i]=b[i]+h[i][j]*y[j]; } for(i=0;i<n;i++) { a1[i]=b[i]; for(j=0;j<n;j++) a1[i]=a1[i]-h[i][j]*x[j]; } for(i=0;i<n-1;i++) { t=a1[i]; a1[i]=a1[p[i]]; a1[p[i]]=t; } for(i=0;i<n;i++) { y[i]=a1[i]; for(j=0;j<i-1;j++) y[i]=y[i]-l[i][j]*y[j]; y[i]=y[i]*1.0/l[i][i]; } for(i=n-1;i>=0;i--) { d[i]=y[i]; for(j=n-1;j>i;j--) d[i]=d[i]-u[i][j]*d[j]; d[i]=d[i]*1.0/u[i][i]; } for(i=0;i<n;i++) x[i]=x[i]+d[i]; } for(i=0;i<n;i++) printf("x[%d]=%lf ",i,x[i]); } } double r[10];把它改a1[10],因为你上面有int r;不能相同 再其他的稍为改下就可以了是的 呵呵,写的那么长

SpinServers(月89美元) 2*e5-2630L v2,美国独立服务器

SpinServers服务商也不算是老牌的服务商,商家看介绍是是2018年成立的主机品牌,隶属于Majestic Hosting Solutions LLC旗下。商家主要经营独立服务器租用和Hybrid Dedicated服务器等,目前包含的数据中心在美国达拉斯、圣何塞机房,自有硬件和IP资源等,商家还自定义支持用户IP广播到机房。看到SpinServers推出了美国独服的夏季优惠促销活动,最低月...

Megalayer新加坡服务器国际带宽线路测评

前几天有关注到Megalayer云服务器提供商有打算在月底的时候新增新加坡机房,这个是继美国、中国香港、菲律宾之外的第四个机房。也有工单询问到官方,新加坡机房有包括CN2国内优化线路和国际带宽,CN2优化线路应该是和菲律宾差不多的。如果我们追求速度和稳定性的中文业务,建议还是选择CN2优化带宽的香港服务器。这里有要到Megalayer新加坡服务器国际带宽的测试服务器,E3-1230配置20M国际带...

CloudCone闪购优惠洛杉矶MC机房VPS月$1.99 便宜可随意删除重开

CloudCone商家我们很多喜欢低价便宜VPS主机的肯定是熟悉的,个人不是特别喜欢他。因为我之前测试过几次,开通的机器IP都是不通的,需要删除且开通好几次才能得到一个可用的IP地址。当然他们家的优势也是有的,就是价格确实便宜,而且还支持删除重新开通,而且机房只有一个洛杉矶MC。实话,如果他们家能多几个机房,保持现在的特点,还是有很多市场的。CloudCone是来自美国的主机销售商,成立于2017...

requires为你推荐
实验室方案设计实验室设计有什么要求光纤是什么什么是光纤.是什么材料做的?光纤是什么什么是光纤?google地图api最近链接google map页面 总是报api未定义,但是直接运行地图那页面就可以显示地图,jsp源码在网上下的jsp源码怎么运行?有数据库的快照优化网站快照优化需要注意什么快照优化百度快照和优化是一回事么售后软件电脑维修需要哪些必备软件硬盘分区格式化新硬盘分区格式化有哪些方法?摇一摇周边摇一摇周边怎么打开
花生壳域名 cc域名 韩国vps zpanel java主机 bash漏洞 英文简历模板word 512au 微信收钱 smtp服务器地址 全能空间 创速 大化网 97rb cdn服务 谷歌搜索打不开 magento主机 asp介绍 pptpvpn vpsaa 更多