c語言是否可以通過呼叫void函式來完成對陣列的賦值?

時間 2021-05-29 22:17:47

1樓:zr scat

變長陣列啊,c99範疇,vc沒戲,並且陣列在函式引數會退化為指標

如果陣列引數退化成指標,則不知道步長,不行,可以強行傳入步長來搞定

如果只是想初始化為0的話,直接=,不必如此麻煩

2樓:雲天明

double* z不完了麼

void zeros(int width, int height, double* buf)

然而你這個完全可以用memset吧

然後matlab的引數不可變的機制是copy on write,當函式內沒有修改引數時是引用傳遞,函式內修改了引數就會變成值傳遞,而C是可以自由選擇引用傳遞還是值傳遞的。

3樓:大鈾子

感覺就是對方用C99風格寫了個程式,題主拿過來很疑惑吧_(:з」∠)_

課本上的例題也是這樣寫的_(:з」∠)_,但有一些坑人的地方,建議使用C艹的更高階的功能。

下面是原答案:

這是正確的語法,將二維陣列和它的兩個長度同時同時傳給函式,讓函式來操控這個陣列。

提示1:長度寫在陣列前面,比如:

void fun(int x, int y, int z, int array[x][y][z]);

提示2:陣列長度可以用常數、常量、變數來宣告。再說一遍,可以用變數宣告陣列長度。

提示3:C語言中,const也是變數的一種,或者說「常變數」,用const變數定義陣列長度時,要和用普通變數時一樣,不能給陣列初始化。

在C語言中,如何安全地使用void ?

Lvcs 靈活接收資料型別,可以試試使用巨集定義而不用函式 舉個例子 判斷兩個數哪個大 define MAX a,b a b a b 使用巨集定義可以靈活接收各種型別的 a b,而使用函式判斷的話就需要事先設定傳入引數的型別了。 劉燦 傳遞指標同時提供區域長度 不用0來標識字串或區域結束 以typd...

在C語言中,函式呼叫前是否必須先宣告?

大江 我的理解是,所呼叫函式可能的返回值型別不同占用的記憶體空間大小不一樣的,而返回值是需要放在臨時空間裡的,所以你需要告訴編譯器需要多少的記憶體空間,比如int需要4位元組,double需要8位元組,如果不寫,編譯器假定留出最通用的4位元組給臨時變數。當然這跟規範和標準以及編譯器的實現有關。如果以...

C語言中既然可以呼叫函式,為什麼還要發明go to語法呢?

雨花 保持跟彙編相容 上古時候一次額外的函式呼叫有很大的效能開銷,我記得很小的時候讀的書裡面還說要盡量合併函式體,節省函式呼叫開銷,不過也不確定他是不是胡說,早年國內計算機技術真不咋地。現在一般都是反過來,能拆成函式的都拆成函式。 陳寧聰 C語言沒有CPS,有了CPS你就可以不要goto了 笑 嚴肅...