*(&a[1][0])对吗

> 问题详情
3 a[3][4]哪个不能表示 a[1][1]: *(&a[0][0]) *(*(a+1)+1) *(&a[1]+1) *(&a[0][0]+4
悬赏:0&答案豆
提问人:匿名网友
发布时间:
3 a[3][4]哪个不能表示 a[1][1]: *(&a[0][0]) *(*(a+1)+1) *(&a[1]+1) *(&a[0][0]+4)请帮忙给出正确答案和分析,谢谢!
您可能感兴趣的试题
14 for(int i...)for(int j...)printf(i,j);printf(j)会出现什么问题25 for(i=0;i&10;++i,sum+=i);的运行结果36 10个数顺序插入查找二叉树,元素62的比较次数47 10个数放入模10hash链表,最大长度是多少
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
每天只需0.4元
选择支付方式
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
恭喜你被选中为
扫一扫-免费查看答案!
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:if(a=0) i=1;是合法的C语句。这句话对吗,为什么_百度知道
if(a=0) i=1;是合法的C语句。这句话对吗,为什么
我有更好的答案
单纯说合法性的话,是合法的.但是功能性显然不完善.实际执行效果等价于a=0;if(a)i=1;如果是比较a是否为0的话,使用if(a==0)i=1;//&if(!a)i=1;与上句等价
采纳率:87%
来自团队:
合法的,if里面是1的话就执行,零就不执行,而a=0是对的话,a=0这条表达式就相当于是1,就会执行i=1。a=0是错的话,if里面就等于0,就不执行后面的语句。
可以执行的语句都是合法的,这一句也是不例外。因为if(a=0)那里会编译成a=0;if(a).....虽然永远都无法执行if内的语句,但其确实合法
是合法的,只不过可能跟你想要实现的功能不太一样罢了合法不合法只看编译能不能通过如果像if (a = 0)这么写的话,编译器会报个warning说你这不是比较a是否等于0但是如果真想这么写也没有问题的if (a = 0),就是判断给a赋值为0是否成功
是合法的的C语法
~~~~~~~~~~~~~~~~~
对啊,我觉得逻辑没啥问题
其他3条回答
为您推荐:
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c++求解释下面式子中*((a+1)[1])=*(*((a+1)+1))怎么来的_百度知道
c++求解释下面式子中*((a+1)[1])=*(*((a+1)+1))怎么来的
*(a+1)[1]=*((a+1)[1])=*(*((a+1)+1))=**(a+2)=a[2][0]
我有更好的答案
二维数组和指针1、二维数组和数组元素的地址若有以下定义:int *p, a[3][4]; 1)二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。如以上定义的a数组,则可视a数组由a[0]、a[1]、a[2]等三个元素组成,而a[0]、a[1]、a[2]等每个元素又分别是由4个整型元素组成的一维数组。可用a[0][0]、a[0][1]等来引用a[0]中的每个元素,其它依次类推。在第二节中已解释过,C语言中,在函数体中或在函数外部定义的一维数组名是一个地址常量,其值为数组第一个元素的地址,此地址的基类型就是数组元素的类型。在以上二维数组中,a[0]、a[1]、a[2]都是一维数组名,同样也代表一个不可变的地址变量,其值依次为二维数组每行第一个元素的地址,其基类型就是数组元素的类型。因此,对于二维数组,象a[0]++这样的表达式是非法的。若有表达式a[0]+1,表达式中1的单位应当是2个字节。在以上定义中,指针变量p的基类型与a[i](0≤i<3)相同,因此,赋值语句p=a[i];是合法的。我们已知a[i]也可以写成:*(a+i),故以上赋值语句也可写成:p=*(a+i);。 2)二维数组名也是一个地址常量二维数组名同样也是一个存放地址常量的指针,其值为二维数组中第一个元素的地址。以上a数组,数组名a的值与a[0]的值相同,只是其基类型为具有4个整型元素的数组类型。即a+0的值与a[0]的值相同,a+1的值与a[1]的值相同,a+2的值与a[2]的值相同,它们分别表示a数组中第零、第一、第二行的首地址。二维数组名应理解为一个行指针。在表达式a+1中,数值1的单位应是4×2个字节,而不是2个字节。赋值语句p=a;是不合法的,因为p和a的基类型不同。同样,对于二维数组名a,也不可以进行a++,a=a+i等运算。 3)二维数组元素的地址二维数组元素的地址可以由表达式&a[i][j]求得;也可以通过每行的首地址来表示。以上二维数组a中,每个元素的地址可以通过每行的首地址:a[0]、a[1]、a[2]等来表示。如:地址&a[0][0]可以用a[0]+0来表示,地址&a[0][1]可以用a[0]+1表示;若0≤i<3、0≤j<4,则a[i][j]的地址可用以下五种表达式求得:(1)&a[i][j](2)a[i]+j(3)*(a+i)+j(4)&a[0][0]+4*i+j (5)a[0]+ 4*i+j 在以上表达式中a[i]、&a[0][0]、a[0]的基类型都是int类型,系统将自动据此来确定表达式中常量1的单位是2个字节。但是不可以把求a[i][j]地址的表达式写成:a+4*i+j,因为a的基类型是4个整型元素的数组类型,系统将自动据此来确定常量1的单位是8个字节。 2、通过地址来引用二维数组元素若有以下定义:int a[3][4],i,j;且当0≤i<3、0≤j<4,则a数组元素可用以下五种表达式来引用:(1)a[i][j](2)*(a[i]+j)(3)*(*(a+i)+j)(4)(*(a+i))[j](5)*(&a[0][0]+4*i+j) 在(2)中,表达式*(a[i]+j)中,因为a[i]的基类型为int,j的位移量为2×j字节。 在(3)中,表达式*(*(a+i)+j)中,a的基类型为4个元素的数组,i的位移量为4×2×i字节;而*(a+i)的基类型为int,j的位移量仍为2×j字节。 在(4)中,*(a+i)外的一对圆括号不可少,若写成:*(a+i)[j],因为运算符[]的优先级高于*号,表达式可转换成:*(*(a+i)+j)),即为:*(*(a+i+j)),这时i+j将使得位移量为4×2×(i+j)个字节,显示然这已不是元素a[i][j]的地址。*(*(a+i+j))等价于*(a[i+j])、等价于:a[i+j][0],引用的是数组元素a[i+j][0],而不是a[i][j],很可能早已超出数组定义的范围。 在(5)中,&a[0][0]+4*i+j代表了数组元素a[i][j]的地址,通过间址运算符*号,表达式*(&a[0][0]+4*i+j)代表了数组元素a[i][j]的存储单元。
采纳率:59%
你知道基础的变化吧: a[1]=*(a+1)用代数的知识,假设 & b=a+1, &b[1]=*(b+1)& & & & & & & & & & & & &那么 & (a+1)[1]=*((a+1)+1)=*(a+2)& & & & & & & & & & & & 所以 & &&*(a+1)[1]=*(((a+1)+1))=**(a+2)其实就是指向第三行第一个元素。代码检验:#include&&iostream&using&namespace&int&main(){&&&int&a[3][2]={1,2,3,4,5,6};&&&cout&&*((a+1)[1])&&&&&cout&&*(*((a+1)+1))&&&&&cout&&**(a+2)&&&&&//&&&&&&&//&a&&&&1&&&2&&&//&a+1&&3&&&4&&&//&a+2&&5&&&6&&&//}输出:5& & & & & 5& & & & & 5
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。a[0]+1 是表示什么意思呢?_百度知道
a[0]+1 是表示什么意思呢?
a[0]+1是不是表示引用元素a[0]的内容再加1比如说a[0]存放的内容是2000那么a[0]+1是不是相当于2001啊?书上说的a[0]+1是表示二维数组第0行的第一列的地址
我有更好的答案
楼主,很负责的告诉你a[0]+1并不是代表第0行的第一列。而是代表第一行的第二列。(回想一下一维数组a[0]代表第一个元素),此时的a[0]+1相当于指针a[0]代表的是第一行的首地址在二维数组中a[i]代表的是行a[i]+j代表的是第i+1行第j+1列在一维数组中a[i]+j代表的是用第i+1这个位置的元素加上j
采纳率:49%
如果是二维数组a[0]+1;代表a[0][1];这时候a[0]是行数组名它代表这一行的首地址就是a[0][0],
+1就等于加它类型的字节数 1*字节数,(+2就是2*字节数)结果就是a[0][1];
如果是一维的挂,更简单;+1就等于加它类型的字节数*1;
结果是a[1];
表示的是&a[0]这个地址的下一个地址,而不是a[0]这个值加1
a[0]+1就是a[X]这个一维数组的第一个值加1,你前面说的那个。a[0,1]才是表示二维数组第0行第一列的地址。
如果a是一个二维数组的话,当然书上说的没有问题喽。不过你说的也没有错,实际上,a[0]+1 的值就是a[0][1]所在内存单元的地址哦。自己很容易写个程序,调试看看a[0]+1与a[0][1]的值哦,你会发现他们俩是相等的!
不是你那么理解的,这是一种固定的表达方式,其实就是a[0][1]
其他4条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。对于反应A+3B = 2C+D来说.下列反应速率中最快的是A.v(A)=0.3mol·L-1·min-1 B.v(B)=0.01mol·L-1·s-1 C.v(C)=0.5mol·L-1·min-1 D.v(D)=0.006mol·L-1·s-1 题目和参考答案——精英家教网——
暑假天气热?在家里学北京名师课程,
& 题目详情
对于反应A+3B = 2C+D来说,下列反应速率中最快的是A.v(A)=0.3mol·L-1·min-1&&&&&&&&&&&&&&&&&&&&&&&&&&& B.v(B)=0.01mol·L-1·s-1& C.v(C)=0.5mol·L-1·min-1&&&&&&&&&&&&&& &&&&&& D.v(D)=0.006mol·L-1·s-1&&&&&& &
练习册系列答案
科目:高中化学
对于反应&A+3B═2C&下列表示的反应速率最快的是(  )A.VA=0.01&mol/(L?s)B.VB=0.02&mol/(L?s)C.VB=0.6mol/(L?min)D.VC=1.0mol/(L?min)
科目:高中化学
对于反应A+3B═2C+D来说,下列反应速率中最快的是(  )A.v(A)=0.1&mol/(L?min)B.v(B)=0.6&mol/(L?min)C.v(C)=0.5&mol/(L?min)D.v(D)=0.3&mol/(L?min)
科目:高中化学
来源:09-10年邢台市高一下学期期末考试化学卷
题型:选择题
对于反应A+3B = 2C+D来说,下列反应速率中最快的是A.v(A)=0.3mol·L-1·min-1&&&&&&&&&&&&&&&&&&&&&&&&&&& B.v(B)=0.01mol·L-1·s-1& C.v(C)=0.5mol·L-1·min-1&&&&&&&&&&&&&& &&&&&& D.v(D)=0.006mol·L-1·s-1&&&&&& &
科目:高中化学
来源:09-10年邢台市高一下学期期末考试化学卷
题型:单选题
对于反应A+3B = 2C+D来说,下列反应速率中最快的是A.v(A)=0.3mol·L-1·min-1&&&&&&&&&&&&&&&&&&&&&&&&&&& B.v(B)=0.01mol·L-1·s-1&C.v(C)=0.5mol·L-1·min-1&&&&&&&&&&&&&&&&&&&& D.v(D)=0.006mol·L-1·s-1&&&&&&
精英家教网新版app上线啦!用app只需扫描书本条形码就能找到作业,家长给孩子检查作业更省心,同学们作业对答案更方便,扫描上方二维码立刻安装!
请输入姓名
请输入手机号

我要回帖

更多关于 深天马a 的文章

 

随机推荐