所以我试图实现的是从函数返回一个指向二维数组的指针,以便它可以在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因为无能的教授正在教他们这些是重要的,工业可以通过摆脱这些人来节省一大笔钱 –