作者coolbeela (今年要冲一发)
看板C_and_CPP
标题[问题] []或*当成参数传入的问题
时间Mon Apr 13 02:49:38 2009
之前有许多前人的文章讨论到char*和char[]的差别
让我对两者不同的宣告方式的差别有更进一步的了解 非常感谢大家
但日前写程式时碰到一个问题 就是如果要传递参数时 两者的写法到底差在哪?
假设我要传一个二维阵列char send[][]到function中 那写成
function(char receive[][]);
和
function(char **receive);
的差别在哪呢?? (假设send[][]存在於main中 没有local不local的问题)
另外 我记得没错的话 前者的写法有问题 因为一定要指定第二维的长度对吧?? (why?)
但如果这麽麻烦 为什麽不全部用char **来接这个阵列就好了呢??
还是说 今天如果我宣告的send[][]方式不一样
(例如改用send **宣告 或大小有指定的send[A][B] 甚至*send[]这种混合式的)
我传递的方式也要跟着不一样? 麻烦大家解惑 非常感谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.236.49
※ 编辑: coolbeela 来自: 118.168.236.49 (04/13 02:50)
1F:→ COLDTURNIP:不指定第二维长度,它不知道第一维一次要跳多远。 04/13 08:22
2F:→ tinlans:** 跟 [][] 差很多,後者保证空间连续,存取效率都有差。 04/13 09:00
3F:→ tinlans:而且这两种 type 不能互转。 04/13 09:00
4F:→ joefaq:[]好像传值的时候会复制整个array *就一个指标 04/13 12:07
5F:→ weiyucsie:楼上别乱说XD 04/13 14:25