鱼C论坛

 找回密码
 立即注册
查看: 2901|回复: 9

[已解决]自定义函数(c)

[复制链接]
发表于 2022-10-16 15:13:52 | 显示全部楼层 |阅读模式

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

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

x
flag[]数组各个元素的值为0或者1,如何使得前n个元素都为0?
(对数组[]与指针数组*的处理一直感到困惑)
最佳答案
2022-10-16 15:33:16
本帖最后由 jackz007 于 2022-10-16 16:06 编辑

        int a[3] = {1 , 2 , 3}  // * a 就是 *(a + 0) 就是 a[0],*(a + 2) 就是 a[2] 自己把他们的值都打印出来不就知道了?

        int a[3][3] = {{1 , 2 , 3} ,
                           {4 , 5 , 6} ,
                           {7 , 8 , 9}} ; // * (* a) = *(*(a + 0) + 0) = a[0][0],*(*(a + 1) + 2) = a[1][2]


        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-16 15:20:13 | 显示全部楼层
PS :*a与a[]有区别吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-16 15:33:16 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-16 16:06 编辑

        int a[3] = {1 , 2 , 3}  // * a 就是 *(a + 0) 就是 a[0],*(a + 2) 就是 a[2] 自己把他们的值都打印出来不就知道了?

        int a[3][3] = {{1 , 2 , 3} ,
                           {4 , 5 , 6} ,
                           {7 , 8 , 9}} ; // * (* a) = *(*(a + 0) + 0) = a[0][0],*(*(a + 1) + 2) = a[1][2]


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

使用道具 举报

 楼主| 发表于 2022-10-16 15:59:28 | 显示全部楼层
jackz007 发表于 2022-10-16 15:33
int a[3] = {1 , 2 , 3}  // * a 就是 *(a + 0) 就是 a[0],*(a + 2) 就是 a[2] 自己把他们的值都 ...

谢谢,那请问没区别的话为什么要用*a和a[]来描述同一件事情?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-16 16:05:53 | 显示全部楼层
      * a 通常是指针的表达,而 a[] 是数组的表达,两种表达只是可以达到相同的效果而已,没有必要纠结,自己擅长哪一种表达就是用哪一种好了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-16 16:32:57 | 显示全部楼层
jackz007 发表于 2022-10-16 16:05
* a 通常是指针的表达,而 a[] 是数组的表达,两种表达只是可以达到相同的效果而已,没有必要纠结, ...

那么如果我想把flag里所有元素传入min函数
而且我在min函数外面需要得到flag处理后的值
min(flag)
这样输入数组对吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-16 16:35:28 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-16 16:38 编辑
萨西摩尔·槿花 发表于 2022-10-16 16:32
那么如果我想把flag里所有元素传入min函数
而且我在min函数外面需要得到flag处理后的值


         是的。需要注意的是,被作为参数传入函数的所有数据本身在完成调用的时候,都会遭到丢弃,但是,作为指针传入函数,函数修改的指针所指内存单元的数据,所以,在退出函数后,被修改的数据依然会存在。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-16 16:40:56 | 显示全部楼层
jackz007 发表于 2022-10-16 16:35
是的。需要注意的是,被作为参数传入函数的所有数据本身在完成调用的时候,都会遭到丢弃,但 ...

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

使用道具 举报

发表于 2022-10-22 02:52:47 From FishC Mobile | 显示全部楼层
本帖最后由 howzyao 于 2022-10-22 03:01 编辑
萨西摩尔·槿花 发表于 2022-10-16 15:59
谢谢,那请问没区别的话为什么要用*a和a[]来描述同一件事情?


如果非要讲区别,需要看实际举例:
*a
代表一个地址,地址实际进入函数后,修改地址中存放的值,函数结束,地址抛弃,但地址的值,还在。

b[ ]

代表一组 同类型的变量 叫做数组,它的第1个元素的地址: b[0] 就正是用 *b来表示,所以,可以看做一样使用的道理在这里。但请考虑:b[1] 当它要入参时,怎么写?此时,区别的特性就出来

我想,这就是为何要表达为
*a 和 a[ ]
的2种方式的一种灵活性设计吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-22 12:34:52 | 显示全部楼层
howzyao 发表于 2022-10-22 02:52
如果非要讲区别,需要看实际举例:
*a
代表一个地址,地址实际进入函数后,修改地址中存放的值,函数 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-20 13:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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