鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: zwy12138

C语言 指针问题

[复制链接]
发表于 2017-7-8 22:01:11 | 显示全部楼层
求道于盲 发表于 2017-7-8 21:42
你能说出
sizeof 数组 得到数组的大小
你却无法解释 为什么

我试了下数组不传地址,传引用在别的函数里用sizeof,真的是数组本身大小。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-8 22:01:48 | 显示全部楼层
回忆一遥远 发表于 2017-7-8 21:51
你能提供一下写了
【数组是另外一种类型
int[2] 类型

书的话
ISO/IEC 9899:201x
6.2.5 Types 第20条
里面就有这样的描述了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-8 22:04:40 | 显示全部楼层
求道于盲 发表于 2017-7-8 22:01
书的话
ISO/IEC 9899:201x
6.2.5 Types 第20条


好的 多谢啦
我之后又查了好多资料 有真有假,最后终于在知乎找到证明方式了
结果和你说的一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-8 22:06:15 | 显示全部楼层
求道于盲 发表于 2017-7-8 22:01
书的话
ISO/IEC 9899:201x
6.2.5 Types 第20条


哇~ 我都忘了 C 标准这本书(文档)了.........
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 00:46:12 From FishC Mobile | 显示全部楼层
你这里面p2是一个整体作为指针定义的还是2作为p的参数来定义字符指针的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 06:39:36 From FishC Mobile | 显示全部楼层
回忆一遥远 发表于 2017-7-8 21:51
你能提供一下写了
【数组是另外一种类型
int[2] 类型

我昨天写时把函数形参写为int *,实参输入的为8*8二维数组名编译时提示形参、实参类型不符大概意思就是一个为int *,一个为int [8][8],
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 07:29:29 | 显示全部楼层
知表不言 发表于 2017-7-9 06:39
我昨天写时把函数形参写为int *,实参输入的为8*8二维数组名编译时提示形参、实参类型不符大概意思就是一 ...

嗯 我已经知道了......
数组也是一种类型....
所以只能传 int[][8] ,传 int** 和 int*[8] 不知为何都有问题...
多维数组毕竟也是结构一维的,int** 确实不行。 int*[8] 。。。不知道代表啥..等等!好像时指针数组啊...好吧,难怪不行。。
而且理论上用 int* 也行啊,只是要自己转化,我去试试看..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 07:41:54 | 显示全部楼层
知表不言 发表于 2017-7-9 06:39
我昨天写时把函数形参写为int *,实参输入的为8*8二维数组名编译时提示形参、实参类型不符大概意思就是一 ...

3.png
只传一个地址过去 虽然类型不同但是也能使用
不过提示形参、实参类型不符也说明数组确实是种特殊的数据结构。不能等同于常量指针.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 09:17:29 From FishC Mobile | 显示全部楼层
我刚自学开始,前面不太清楚二维数组指针表示方法,以为都是按[]定义(加上括号内的数然后整体取*),把二维数组理成了双重指针那样,所以实参当时输的应该是'&数组名[0][0]'还是'数组名[0][0]',然后出现的上述提示信息具体我也记清楚,反正是看到了int[8][8]这个类型,当时还很诧异,后来把指针表示方法更正后就忘了这回事了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 09:22:31 From FishC Mobile | 显示全部楼层
没记清楚,三行两列的二维数组中array[x][y]指针应表示为array[x * 2(数组宽度既数组第二个下标,这也解释了为什么列举法数组定义时可以省略第一个下标而不能省略第二个及之后的下标) + y]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 20:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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