決定 C 函數參數中的陣列大小
在 C 中,陣列以函數參數傳遞時會隱式轉換為指標。這意味著大小資訊遺失,並且無法在函數內直接存取數組的大小。
在您的程式碼片段中:
void makeVectorData(float p_vertData[]) { int num = (sizeof(p_vertData)/sizeof(int)); }
sizeof(p_vertData) 擷取大小指向陣列的指標,而不是陣列本身。由於指標需要 32 位元(在 32 位元系統上),因此無論陣列的實際大小如何,num 都會等於 1。
解:
到存取陣列的大小,您可以傳遞一個單獨的參數來指示大小:
void makeVectorData(float p_vertData[], int size) { int num = size; }
在呼叫者中,然後,您可以將陣列的大小指定為參數:
makeVectorData(verts, sizeof(verts) / sizeof(float));
以上是如何確定作為函數參數傳遞的 C 數組的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!