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

RackNerd :美国大硬盘服务器促销/洛杉矶multacom数据中心/双路e5-2640v2/64G内存/256G SSD+160T SAS/$389/月

大硬盘服务器、存储服务器、Chia矿机。RackNerd,2019年末成立的商家,主要提供各类KVM VPS主机、独立服务器和站群服务器等。当前RackNerd正在促销旗下几款美国大硬盘服务器,位于洛杉矶multacom数据中心,亚洲优化线路,非常适合存储、数据备份等应用场景,双路e5-2640v2,64G内存,56G SSD系统盘,160T SAS数据盘,流量是每月200T,1Gbps带宽,配5...

LOCVPS洛杉矶CN2线路KVM上线,洛杉矶/香港云地/香港邦联7折

LOCVPS发来了新的洛杉矶CN2线路主机上线通知,基于KVM架构,目前可与香港云地、香港邦联机房XEN架构主机一起适用7折优惠码,优惠后最低美国洛杉矶CN2线路KVM架构2GB内存套餐月付38.5元起。LOCPVS是一家成立较早的国人VPS服务商,目前提供洛杉矶MC、洛杉矶C3、和香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡、德国和荷兰等机房VPS主机,基于KVM或者XEN架构。...

PhotonVPS:$4/月,KVM-2GB/30GB/2TB/洛杉矶&达拉斯&芝加哥等

很久没有分享PhotonVPS的消息,最近看到商家VPS主机套餐有一些更新所以分享下。这是一家成立于2008年的国外VPS服务商,Psychz机房旗下的站点,主要提供VPS和独立服务器等,数据中心包括美国洛杉矶、达拉斯、芝加哥、阿什本等。目前,商家针对Cloud VPS提供8折优惠码,优惠后最低2G内存套餐每月4美元起。下面列出几款主机配置信息。CPU:1core内存:2GB硬盘:30GB NVm...

requires为你推荐
嵌入式开发嵌入式开发是什么xhtml请问XHTML是什么东西?一般在什么情况下使用的?php文件php 格式文件 怎么打开?急!!!按键精灵教程按键精灵教程容灾备份目前有哪些容灾备份技术空间背景图片如何更换QQ空间背景图片小项目家庭办厂小项目有哪些?家庭小厂60个4g上网卡联通4g上网卡是什么?硬盘分区格式化新硬盘分区格式化有哪些方法?官方网店官方旗舰店和旗舰店是什么意思,有什么区别?它们卖的都是正品行货吗?
新加坡主机 linkcloud 国外空间服务商 标准机柜尺寸 数字域名 cloudlink 万网空间管理 实惠 开心online privatetracker 美国服务器 德国代理ip 俄勒冈州 kosspp 八度空间论坛 服务器监测软件 qq空间登陆首页 dns服务器是什么 免费服务器代理 无限流量卡 更多