這似乎是工作(編譯器不抱怨,反正):目標C - 傳遞數組文本的方法
float adsr[4] = {0,1.0/PULSE_SPEED, 0,1};
[sequence setBaseADSR:adsr];
,但我想讓它更簡潔,做到這一點:
[sequence setBaseADSR:{0,1.0/PULSE_SPEED, 0,1}];
我該怎麼做?在JavaScript中,我會調用括號中的東西「數組字面量」。不知道C語言是否有相同的概念或術語。
這似乎是工作(編譯器不抱怨,反正):目標C - 傳遞數組文本的方法
float adsr[4] = {0,1.0/PULSE_SPEED, 0,1};
[sequence setBaseADSR:adsr];
,但我想讓它更簡潔,做到這一點:
[sequence setBaseADSR:{0,1.0/PULSE_SPEED, 0,1}];
我該怎麼做?在JavaScript中,我會調用括號中的東西「數組字面量」。不知道C語言是否有相同的概念或術語。
第二種方法不起作用,因爲編譯器不知道數組元素是哪種類型。然而,這還是這樣的事情應該工作:
[sequence setBaseADSR:(float adsr[4] = {0,1.0/PULSE_SPEED, 0,1})];
的聲明中則表達式返回最左邊的元素,如果你的編譯器支持C99複合文字的語法(現在不能,雖然測試)
+1,但看起來......錯了......:P – 2010-03-23 15:53:08
的確如此。但是,我們在for循環中初始化計數器的方式是相同的,所以對於不重要的目的,它就足夠了 – 2010-03-23 15:54:53
完全沒有必要。見Cirno de Bergerac的答案。 – 2010-11-25 02:21:22
,這是可能。
[sequence setBaseADRS:(float [4]){0,1.0/PULSE_SPEED,0,1}];
我最喜歡的功能之一。我爲'CGPoint','CGRect','UIEdgeInsets'等做了很多工作:'(CGRect){{x,y},{w,h}}' – nielsbot 2012-02-27 20:16:18
如果你能控制這個API,我強烈建議不要傳遞這樣的原始數組。 C數組很雜亂。 – Chuck 2010-03-23 17:52:56
@Chuck你會建議什麼呢? – 2012-07-12 00:15:40