使用数组数组调用 C++ 函数
Calling a C++ function with an array of arrays
我有一个需要调用的库函数,但由于某种原因,我在 c++ 基础知识方面遇到了问题。
函数的声明为:
void doSomething(int** values, int length, int width);
它采用一个整数数组数组。这很好,我在发送数据时遇到问题。
我的数据只有2个整数,比如4和5。
在 c# 中,我认为语法是这样的:[ [4,5] ]
一个数组,其中包含一个包含两个值的数组。 你到底如何在C++中宣布这个基本结构?
我试过:
int vals[1][2] = { {4,5} };
doSomething(vals, 1,2);
但是编译器返回:
error: no matching function for call to ‘myclass::doSomething(int [1][2], int, int)’
doSomething(vals, 1, 2);
^
src/mysclass.cpp:74:6: note: candidate: void myclass::doSomething(int**, int, int)
这必须很简单。必须有一种简单的方法来声明此数据以使用这些值调用函数。如果可能的话,我更喜欢基于堆栈的。
参数int **values
表示指向一个 int(或多个连续整数(的一个指针(或几个连续指针(的指针。"几个连续..."的情况可以用来表示"二维数组"。请注意,values
指向指针值数组,而不是整数数组。这与像int myArr[10][20]
这样的数据结构不同,其中myArr
指向/是一个整数数组的数组。
调用它的一种简单方法是生成一个 1D 数组,让一个int
指针指向该数组,并传递此指针的地址:
void test (int** value, int length, int width) {
for (int l=0; l<length; l++) {
for (int w=0; w<width; w++) {
cout << "[" << l << "," << w << "]:" << value[l][w] << endl;
}
}
}
int main() {
int myArr[] = { 4,5 };
int* ptrToMyArr = myArr;
test (&ptrToMyArr,1,sizeof(myArr)/sizeof(int));
}
你也可以做这样的事情:
#include <iostream>
void doSomething(int** value, int length, int width)
{
for (int i = 0; i < length; ++i)
for (int j= 0; j < width; ++j)
std::cout << value[i][j] << std::endl;
}
int main()
{
// array of arrays of int
int arr[2][2] = { { 1,2 },{ 3,4 } };
// convert to array of pointers to int
int *vals[2] = { arr[0], arr[1] };
doSomething(vals, 2, 2);
return 0;
}
https://ideone.com/PgpzK0
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 打印 2D 动态数组 c++ 函数
- C++数组函数
- 在数组函数指针中调用void
- 数组函数似乎没有找到最大值
- 使用数组函数和循环求解伪元编码|C
- 在头文件中的函数原型中获取指针数组:函数声明为 void
- 数组函数错误输出
- 读取文件,然后创建数组函数C++
- 指针数组函数参数-奇怪的行为
- 二维数组 - 函数
- "return"没有从数组函数返回正确的值
- 数组函数问题
- 数组函数的大小返回 int 的大小而不是数组
- 从数组函数中删除元素
- 如何从C++中最好地调用具有C99风格数组函数签名的函数
- 追加/打印/插入数组c++函数问题
- 如何将数组函数转换为指针函数
- 多维数组函数输出垃圾
- C++:数组函数的递归最大值