我必须将几兆字节的数据放在C++代码中的二维数组中(嵌入到动态链接库中),每个子类使用不同的数据集。我定义了虚拟访问器方法来访问指定子类的常量,但它只适用于原语和一维数组,而不适用于二维数组:
#include <stdio.h>
class SubClassHoldingData { // inheritance removed for short,compilable example
public:
static int const notWorkingData[2][2];
virtual int const** getNotWorkingData() {
我有一个二维数组。第一个维度有固定的大小,我动态地创建第二个维度。e.g
int **arr;
*arr=( int * ) malloc ( X * sizeof ( int )) // X is input from user
我想做的是创建第二个维度,并在它的末尾写入值。
例如,我使用以下命令为arr创建第二维
arr[0]=( int * ) malloc ( 2 * sizeof ( int ))
然后我想在这个第二维中写入值,但不知道索引。许多编程语言都有array.push方法,该方法在不知道数组的索引或长度的情况下将项推入数组的末尾。我如何在C中实现这样的结果?
我正在用C初始化一个动态的二维结构,如下所示:
typedef struct
{
int v;
unsigned int t;
} cb;
cb **b;
b = malloc( sizeof(*b) * s + (s * (e * sizeof(**b) )));
S和e是数组的维度(行和列大小)
如何在v设置为0的情况下初始化b?
这是我正在使用的结构:
struct nodeList//a node structure
{
int jump;
int config;
int level;
int shifts[200];
int shift_diff[200];
struct nodeList *next;
};
我想要创建一个二维指针数组,它可以用来引用这样一个结构变量,也就是说,该数组中的任何元素都可以被分配一个指向结构变量的指针。如果可能的话,我倾向于使用malloc动态创建数组。任何指针(双关无意)都将不胜感激。
问题是如何在C中获得动态分配的二维数组的长度?我认为下面的代码应该得到行数,但它没有。
char** lines;
/* memory allocation and data manipulation */
int length; //the number of rows
length = sizeof(lines)/sizeof(char*);
对此有什么想法吗?
我在理解双指针stuff.Okay时遇到了一些问题,我知道它的意思是“指针到指针”。但当我在代码中看到它时,我就不明白了。例如:
// Create Dynamic 2D-Array
int **arr = new int*[rows];
for (int i = 0; i < rows; i++)
{
arr[i] = new int[cols];
}
这是我的老师用来创建二维动态数组的代码,但我不理解。有谁能解释一下吗?例如,int **arr = new int*[rows];是什么意思?或者我们在那里使用for的目的是
我正在尝试动态分配一个二维数组,放置一些值,并打印输出。但是,我似乎在获取atoi()函数中程序的输入时犯了错误。
基本上,当我们分配一个静态的二维数组时,我们将其声明为inta3,所以如果是int,那么3*3个单位就分配了那么多的内存。分配动态数组也是这样吗?
下面是我的代码:
#include<stdio.h>
#include<stdlib.h>
int main(int arg,char* argv)
{
int rows = atoi(argv[1]);
int col = atoi(argv[2]);
int rows =3;
int col=3;
in
考虑到每个对象都包含一个对TMyClass的引用数组,我想创建一个TMyClass对象的二维数组。
type
TMyClass = class
MyArray: array[0..10] of TMyClass;
constructor Create;
destructor Destroy;
end;
TMyMatrix = array of array of TMyClass;
var
matrix: TMyMatrix;
begin
SetLength(matrix, 10, 10);
(
我想定义整型数组,其中第一维是动态选择的,而第二维是静态的--类似于int array[][8]。不幸的是,我不能动态分配这样的数组。int ary[][8] = new int[11][8];产生错误:
error: initializer fails to determine size of ‘array’
6 | int array[][8] = new int[11][8];
| ^~~~~~~~~~~~~~
2d.cpp:6:20: error: array must be initialized with a b
我想用malloc声明一个二维数组。在互联网上查找时,所有网站都告诉声明一个int **指针,然后使用malloc首先将单个指针分配给一维数组,然后再次使用malloc为各个int分配空间。我怀疑以这种方式声明的数组并没有在连续的内存地址中保存它的元素。而下面的方式仅使用一条malloc语句,并且动态地分配2d数组,并且所有地址都是根据需要是连续的。那么,下面不应该是动态分配2d数组的正确方法吗?
#include <stdio.h>
int main(){
int (*p)[2] = malloc(3 * sizeof *p);
int i;
int j
我有一个二维动态数组,我想把它传递给一个函数,我该怎么做呢?
int ** board;
board = new int*[boardsize];
//creates a multi dimensional dynamic array
for(int i = 0; i < boardsize; i++)
{
board[i] = new int[boardsize];
}
如何在函数中为二维数组分配动态内存?我试过这样做:
int main()
{
int m=4,n=3;
int** arr;
allocate_mem(&arr,n,m);
}
void allocate_mem(int*** arr,int n, int m)
{
*arr=(int**)malloc(n*sizeof(int*));
for(int i=0;i<n;i++)
*arr[i]=(int*)malloc(m*sizeof(int));
}
但它不起作用。
我一直与动态指针的坏运气,当我把他们的范围到二维和更高。例如,我想要一个指向2D数组的指针。我知道:
int A[3][4];
int (*P)[4] = A;
是完全合法的(即使我不完全理解原因)。考虑到:
int *P = new int[4];
作品,我想象着:
int **P = new int[5][7];
也能起作用,但事实并非如此。此代码声明错误:
Error: A value of type "(*)[7]" cannot be used to initialize an entity of
type "int **"
通过看到这一
我正在尝试根据两个预先计算的值创建一个二维数组(在这里,len1和len2是const,但它们来自另一个函数)。当我运行这个程序时,就会出现分割错误。我对C非常陌生,这是我的第一项任务。不能从导游那里弄清楚,或者说,周围有人帮我吗?
我认为二维数组的动态创建是错误的。但找不到一个有用的好例子。
int main() {
int y, x;
int my_val = 10; // dynamnic value calculated by another func
int len1 = 3; // dynamnic value calculated by