我有一个程序,它需要一个二维的字母数组,并对它们进行置乱。然而,我的代码中有一行没有任何明显的理由更改单独的数组?!
下面是代码:
private String[][] words = {{"a", "b", "c"}, {"d", "e", "f"}, {"g", "h", "i"}};
public Scramble()
{
String[] a = words[2];
// At this point, a = {"g
我有一个二维数组,如下所示:
void getC(int **p)
{
*p = &c[0][0];
}
int c[10][10];
int *a;
getC(a);
a[0][0];
it says error: no match for 'operator[]' in `a[0][0];` what is the problem and how to fix it?
我在理解多维数组方面有很多问题。让一个数组是
x[2]; // now x is constant pointer to first element i.e x's name is address of x[0]
现在二维数组:
x[2][5]; // here x is address of x[0] which contains the address of first element of array x[][0];
现在指针
int(*y)[5];
指向整数数组5的指针。如何编写y = x
现在,我做了一些实际的工作来理解VS,这就是这里,我的主要问题是在图像中:
请从概念
以下声明之间的区别是什么?
int (*B)[COLSIZE];
int *C[ROWSIZE];
B = (int (*)[COLSIZE])malloc(ROWSIZE * sizeof(int[COLSIZE]));
for (int i=0; i < ROWSIZE; ++i)
C[i] = (int *)malloc(COLSIZE * sizeof(int));
我知道这两种都是声明二维数组的不同方式。但我想不出这两者之间的区别。任何图文并茂的解释都将不胜感激。
该函数需要一个指向二维数组[4][5]的指针.实际上,我们可以提交一个指向一维数组[20]的指针.Ie源代码如下所示:
extern f (int a[4][5]);
int b[20];
void func (void)
{
f (b);
}
这是完美的工作代码(如果内部的数组b,我们将像他们在一个二维数组的布局)。不过,汇编将发出警告(由于类型不足):
$ gcc t.c -c
t.c: In function 'func':
t.c:7: warning: passing argument 1 of 'f' from incompatible poin
我知道,对于C中的一维数组,可以使用数组的名称作为地址:
int k;
double x[6], sum=0;
...
/* Sum the values in the array x. */
for (k=0; k<=5; k++)
sum += *(x+k);
我的问题是,为什么这不适用于二维数组?
int g[2][4]={{5,2,2,3},{1,2,3,4}};
int g_count=8, k, sum=0;
for (k=0; k<=g_count-1; k++)
sum += *(g+k);
我注意到,虽然&g[0][0]和g具有相同的
我想在visual studio 2017 c中初始化一个大小可变的二维数组。它是一个具有整数维数的简单正方形。然而,我得到了下面的错误,缺少下标,并且不能分配一个固定大小为0的数组。
int dim = 10;
short square [dim][dim];
使用malloc不能像以前那样使用二维,这意味着其余的代码不再工作,在visual studio 2017中仍然使用具有可变大小的二维数组的最佳解决方案是什么?
int *arr = (int *)malloc(row * col * sizeof(int));
我现在正在学习c,我正在学习指针。我读过一些例子,我想出了以下几个例子:
#include <stdio.h>
int main ()
{
float balance[10][5];
float *p;
p = (float *) balance;
*(p + 16) = 200.0; //init the balance[3][1] with the value 200.0
printf("%f\n", balance[3][1]);
return 0;
当我试图在global二维数组中声明C++时,如下所示:
int maxX = 10;
int maxZ = 10;
SDL_Rect mapX[maxX][maxZ];
我有个错误说
error: variable-size type declared outside of any function