所以我試圖實現的是從函數返回一個指向二維數組的指針,以便它可以在main()中訪問。我知道有一些C++庫可以幫你實現,比如std::vector
,但是我試圖避免動態內存分配,因爲我在嵌入式主板(STM32)上工作,所以我會堅持使用普通的指針和數組。 (也爲一些原因,我不能在KEIL uVision,這也是爲什麼我被迫與指針/陣列工作使用std::array
)從函數返回指向二維數組的指針 - C++
此外,據我所知,一個指針返回到本地陣列int arr[2][2]
定義函數內部不是一個好主意,因爲它在函數返回後將不再有效,這就是爲什麼我創建test_array
,在類中聲明並在函數中定義它(作爲全局變量),所以我認爲這應該這不是一個問題。你們有什麼感想?但是,做這種方式提供了一個錯誤「標量初始化多餘元素」
#include <iostream>
#include "file.hpp"
int main() {
myClass class_object;
class_object.value = class_object.foo();
}
//file.hpp
#include <stdio.h>
class myClass{
int array[2][2];
int (*foo())[2];
int (*value)[2];
int test_array[2][2]; //declaring here!
};
//file.cpp
#include "file.hpp"
int (*myClass::foo())[2]{
test_array[2][2]={ {10,20}, {30, 40} }; //defining here - ERROR!!
int arr[2][2]= {
{1, 10},
{20, 30}
};
return arr;
}
'int(* myClass :: foo())[2] {'這是一種做功能聲明的新方法,我還沒有涉及到呢?它看起來像gobbledegook!你還在返回你所說的你不知道的地方。最後,告訴我們錯誤發生的地方怎麼樣? – John3136
爲什麼人們如此癡迷C語言數組? :( –
@Baum因爲無能的教授正在教他們這些是重要的,工業可以通過擺脫這些人來節省一大筆錢 –