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;不能相同 再其他的稍为改下就可以了是的 呵呵,写的那么长

选择Vultr VPS主机不支持支付宝付款的解决方案

在刚才更新Vultr 新年福利文章的时候突然想到前几天有网友问到自己有在Vultr 注册账户的时候无法用支付宝付款的问题,当时有帮助他给予解决,这里正好顺带一并介绍整理出来。毕竟对于来说,虽然使用的服务器不多,但是至少是见过世面的,大大小小商家的一些特性特征还是比较清楚的。在这篇文章中,和大家分享如果我们有在Vultr新注册账户或者充值购买云服务器的时候,不支持支付宝付款的原因。毕竟我们是知道的,...

piayun(pia云)240元/季起云服务器,香港限时季付活动,cn2线路,4核4G15M

pia云怎么样?pia云是一家2018的开办的国人商家,原名叫哔哔云,目前整合到了魔方云平台上,商家主要销售VPS服务,采用KVM虚拟架构 ,机房有美国洛杉矶、中国香港和深圳地区,洛杉矶为crea机房,三网回程CN2 GIA,带20G防御。目前,Pia云优惠促销,年付全场8折起,香港超极速CN2季付活动,4核4G15M云服务器仅240元/季起,香港CN2、美国三网CN2深圳BGP优质云服务器超高性...

Krypt($120/年),2vCPU/2GB/60GB SSD/3TB

Krypt这两天发布了ION平台9月份优惠信息,提供一款特选套餐年付120美元(原价$162/年),开设在洛杉矶或者圣何塞机房,支持Windows或者Linux操作系统。ion.kryptcloud.com是Krypt机房上线的云主机平台,主要提供基于KVM架构云主机产品,相对于KT主站云服务器要便宜很多,产品可选洛杉矶、圣何塞或者新加坡等地机房。洛杉矶机房CPU:2 cores内存:2GB硬盘:...

requires为你推荐
连接池什么叫做“连接池机制”java队列java中如何实现按队列执行任务swift语言swift语言坑死ios开发者,这样怎么说呢?有基础入门课程推荐吗?体系文件人事管理体系文件 怎么做?什么是cookie有时遇到网页提示禁止第三方cookie是什么意思?阿里下载最新阿里旺旺怎么下载招行信用卡还款招商银行信用卡有哪几个还款方式呢?活跃网络移动大V网是什么意思?乐辞乐组词有哪些科学计算器说明书如何使用科学计算器
域名估价 西安服务器租用 linuxvps 万网免费域名 谷歌域名邮箱 warez sharktech 大硬盘 香港加速器 2014年感恩节 网站保姆 html空间 坐公交投2700元 howfile 河南m值兑换 cdn加速原理 上海服务器 免费私人服务器 路由跟踪 论坛主机 更多