永发信息网

C语言{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},b[4]={1,3,5,7}*p=b,**q=a

答案:1  悬赏:50  手机版
解决时间 2021-01-09 23:32
C语言{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},b[4]={1,3,5,7}*p=b,**q=a
最佳答案
首先,a是一个二维数组,b是一个一维数组。
p是一个指针,它指向的是b的首地址,不是指向整个b数组,所以你从地址p那里取到的数据应该是 1,而不是1,3,5,7
a = 1,3,....21,23这句完全不对,没有这种说法。
a[1]是指向二维数组a的一个地址,a[0]才是指向第一行的地址。
还有,没有**q=a这种写法,会报警告的,因为a指的是int (*)[4],而p是二维指针!追问题干上就是**q=a,(那里q=1,3.....打错了)**q是二级指针啊,这里就是数组和指针的相互引用,我就想问输出结果是什么,还有a[0],是第一行的所有地址么,顺便求问大侠,*a+1是非法的么?*(a+1)是指等价于a[1]的,那么*a+1,能不能看成a[0]+1,然后得到a[1]追答问题有点多啊。。。
*a + 1是合法的,首先,a是一个二维数组,你的*a是指向数组a的首地址,例如:
printf("a = %d\n",*(*a));打印出来的值是1。
然后*的优先级比+的优先级高,也就是程序中的操作将会是先得到一个地址,然后会让地址往后移动一个单位,比如说这里, *a的地址打印出来为0018FF18(printf("a = %p\n",(*a));),然后*a + 1的地址打印出来时0018FF1C,由此可见,这里是*a往后移动了4个字节(int类型为4个字节)也就是从a[0][0]移动到了a[0][1],所以是合法的(printf("a = %d\n",*(*a + 1));)。
a[0]指的是第一行的第一个数据的地址,没有指向一堆数据的地址这种说法(除非是结构体指针或者之类的)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
女人暗恋一个男人会和他发生关系吗
单选题决定下列农业区位选择的主导因素,正确
双峰县娄底诚信招待所(双峰县农村公路管理局
已知2只怪兽2小时吃2吨沙子,那么6只怪兽6小时
麒麟970处理器 中科创达有关系吗
小武石化加油站经度纬度各多少
单选题下列各句没有语病,句意明确的一句是A.
They well be able to fwrecasl(预测)the w
8888×19-1千一百一十一×9×7 1千一百十一巧
西藏人口为什么那么少
北京融安消防中心电话
13-X=35-(26-X)
兵来将什么水来土掩
买个驾驶证
南俊这种汽车多少钱一台新的,
推荐资讯
外兴安岭、库叶岛、海参崴等地区是俄国领土,
光荣军属是指?
柴油依维柯不小心加了6什汽油然又加了30什柴
红二线与黑灰配出什么颜色
扎拉格希热地址在哪,我要去那里办事
用人单位每月要从工资扣除10%当押金合理么?
一克里有几个0.25克
本人想求一幅以农家土菜吊锅为主题的餐馆对联
袋装干鸡粪存放了六个月能自然发酵吗,能不能
正当今昔肠断处 骊歌愁绝不忍听
参加IBM考试要什么资格?
patch system image unconditionally 等多久
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?