鱼C论坛

 找回密码
 立即注册
查看: 760|回复: 18

[已解决]c语言数组指针

[复制链接]
发表于 2020-4-18 22:43:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int a[5][3] , (*p1)[5]  ,(*p2)[3] ;   
p1=a;
p2=a;

请问这段的代码的赋值错在哪里?  p1可以指向列宽为5 的二维数组,现在指向列宽为 3 的二维数组 ,不可以这样子吗?
最佳答案
2020-4-19 12:12:14
九千 发表于 2020-4-19 11:59
我想的是,p的第二维是5 ,a的第二维是3,那p的第二维不是比a的第二维宽,宽度更大不可以这样赋值吗?
...

维度都不同,,你想越界访问啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-18 23:09:25 | 显示全部楼层
指针数组指向数组地址首地址,后面的【3】表示这个数组的类型大小或者说长度吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 23:19:51 | 显示全部楼层
love_qj 发表于 2020-4-18 23:09
指针数组指向数组地址首地址,后面的【3】表示这个数组的类型大小或者说长度吧

您好,
int  (*p)[n]      是一个数组指针,可以指向一个包含n列的二维数组,也就相当于指向一个含n个元素的一维数组,p本质上是一个指针变量

int *b[n]    是一个指针数组,本质上是一个数组,它由n个指向整型数据的指针变量组成,可以这样理解,  int a[4]  是一个整型数组,  a  和 b 都是数组名,只不过a数组的元素是整型数据,b数组的元素是指针变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 23:27:48 From FishC Mobile | 显示全部楼层
这个赋值没有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 23:35:57 | 显示全部楼层

这是一道选择题中的一个选项,题目要求选出其中定义和赋值语句都正确的选项,这个是其中的错误选项
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 23:42:11 From FishC Mobile | 显示全部楼层
九千 发表于 2020-4-18 23:35
这是一道选择题中的一个选项,题目要求选出其中定义和赋值语句都正确的选项,这个是其中的错误选项

考试这东西,忍忍就过去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 23:44:35 | 显示全部楼层
倒戈卸甲 发表于 2020-4-18 23:42
考试这东西,忍忍就过去了

意义不同的,谢谢了,早点休息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 23:51:40 From FishC Mobile | 显示全部楼层
九千 发表于 2020-4-18 23:44
意义不同的,谢谢了,早点休息

意义是指你要考证吗?
考计算机证的话就多刷题,少逛论坛了。试题多半还停留在c89的标准,但现在的主流编译器已经支持c11标准,或者其补订的c14标准了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 10:23:18 | 显示全部楼层
本帖最后由 jkluoling1992 于 2020-4-19 10:58 编辑

int a[5][3] 是int[5][3]

int (*p)[5] 是int(*)[5]

这两个类型数量对不上, a的第二维是3,p的第二维是5,不可赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-19 11:55:55 | 显示全部楼层
倒戈卸甲 发表于 2020-4-18 23:51
意义是指你要考证吗?
考计算机证的话就多刷题,少逛论坛了。试题多半还停留在c89的标准,但 ...

不是考证,好的,以后如果考证的话会的,谢谢您
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-19 11:59:07 | 显示全部楼层
jkluoling1992 发表于 2020-4-19 10:23
int a[5][3] 是int[5][3]

int (*p)[5] 是int(*)[5]

我想的是,p的第二维是5 ,a的第二维是3,那p的第二维不是比a的第二维宽,宽度更大不可以这样赋值吗?
还是c语言规定,就必须是相同的维度才可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 12:08:11 From FishC Mobile | 显示全部楼层
九千 发表于 2020-4-19 11:59
我想的是,p的第二维是5 ,a的第二维是3,那p的第二维不是比a的第二维宽,宽度更大不可以这样赋值吗?
...

c语言没这种规定。这种问题你听别人说有什么用,自己动手一试不就知道了。昨天那题四个选择都是正确的,能编译通过且打印出正确的值来。最简单的四种情况,对四个变量名直接两层解引用,不进行偏移,你看看能不能得到二维数组的a[0][0]。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 12:12:14 | 显示全部楼层    本楼为最佳答案   
九千 发表于 2020-4-19 11:59
我想的是,p的第二维是5 ,a的第二维是3,那p的第二维不是比a的第二维宽,宽度更大不可以这样赋值吗?
...

维度都不同,,你想越界访问啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-19 13:13:43 | 显示全部楼层
倒戈卸甲 发表于 2020-4-19 12:08
c语言没这种规定。这种问题你听别人说有什么用,自己动手一试不就知道了。昨天那题四个选择都是正确的, ...

嘤嘤嘤嘤,我编译确实都能通过,两层引用也能得到首行首元素的值,,,,
不管了,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-19 13:42:10 | 显示全部楼层
jkluoling1992 发表于 2020-4-19 12:12
维度都不同,,你想越界访问啊

是会出现莫名其妙的东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 13:45:00 From FishC Mobile | 显示全部楼层
本帖最后由 倒戈卸甲 于 2020-4-19 14:11 编辑
九千 发表于 2020-4-19 13:13
嘤嘤嘤嘤,我编译确实都能通过,两层引用也能得到首行首元素的值,,,,
不管了,,,


好了,删掉了。关于数组的数据结构,你学的深了自然会认识到。这些理论上的东西平时也用不上,错误的认知也不影响你编程,何况考试只需按照书本来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 13:58:19 From FishC Mobile | 显示全部楼层
本帖最后由 倒戈卸甲 于 2020-4-19 14:13 编辑
九千 发表于 2020-4-19 13:13
嘤嘤嘤嘤,我编译确实都能通过,两层引用也能得到首行首元素的值,,,,
不管了,,,

已删除
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 14:01:51 From FishC Mobile | 显示全部楼层
九千 发表于 2020-4-19 13:13
嘤嘤嘤嘤,我编译确实都能通过,两层引用也能得到首行首元素的值,,,,
不管了,,,

给你领悟几分钟,等会儿我会删掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-19 14:52:18 | 显示全部楼层
倒戈卸甲 发表于 2020-4-19 13:45
好了,删掉了。关于数组的数据结构,你学的深了自然会认识到。这些理论上的东西平时也用不上,错误的认 ...

确实实际编程也不会这样,就是题目是这样,一遇上就晕的不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 06:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表