萨西摩尔·槿花 发表于 2022-10-16 15:13:52

自定义函数(c)

flag[]数组各个元素的值为0或者1,如何使得前n个元素都为0?
(对数组[]与指针数组*的处理一直感到困惑)
{:10_286:}

萨西摩尔·槿花 发表于 2022-10-16 15:20:13

PS :*a与a[]有区别吗

jackz007 发表于 2022-10-16 15:33:16

本帖最后由 jackz007 于 2022-10-16 16:06 编辑

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

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


      

萨西摩尔·槿花 发表于 2022-10-16 15:59:28

jackz007 发表于 2022-10-16 15:33
int a = {1 , 2 , 3}// * a 就是 *(a + 0) 就是 a,*(a + 2) 就是 a 自己把他们的值都 ...

谢谢,那请问没区别的话为什么要用*a和a[]来描述同一件事情?

jackz007 发表于 2022-10-16 16:05:53

      * a 通常是指针的表达,而 a[] 是数组的表达,两种表达只是可以达到相同的效果而已,没有必要纠结,自己擅长哪一种表达就是用哪一种好了。

萨西摩尔·槿花 发表于 2022-10-16 16:32:57

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

那么如果我想把flag里所有元素传入min函数
而且我在min函数外面需要得到flag处理后的值
min(flag)
这样输入数组对吗

jackz007 发表于 2022-10-16 16:35:28

本帖最后由 jackz007 于 2022-10-16 16:38 编辑

萨西摩尔·槿花 发表于 2022-10-16 16:32
那么如果我想把flag里所有元素传入min函数
而且我在min函数外面需要得到flag处理后的值



         是的。需要注意的是,被作为参数传入函数的所有数据本身在完成调用的时候,都会遭到丢弃,但是,作为指针传入函数,函数修改的指针所指内存单元的数据,所以,在退出函数后,被修改的数据依然会存在。

萨西摩尔·槿花 发表于 2022-10-16 16:40:56

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

感谢{:10_257:}

howzyao 发表于 2022-10-22 02:52:47

本帖最后由 howzyao 于 2022-10-22 03:01 编辑

萨西摩尔·槿花 发表于 2022-10-16 15:59
谢谢,那请问没区别的话为什么要用*a和a[]来描述同一件事情?

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

b[ ]

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

我想,这就是为何要表达为
*a 和 a[ ]
的2种方式的一种灵活性设计吧。

萨西摩尔·槿花 发表于 2022-10-22 12:34:52

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

感谢{:10_275:}
页: [1]
查看完整版本: 自定义函数(c)