Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将二维数组分配给其他临时二维数组。。。。。??在C语言编程中_C - Fatal编程技术网

如何将二维数组分配给其他临时二维数组。。。。。??在C语言编程中

如何将二维数组分配给其他临时二维数组。。。。。??在C语言编程中,c,C,嗨,我正在尝试将二维数组的内容存储到临时数组中。。。。怎么可能。。。我不想在这里循环,因为这会增加额外的开销。。任何指针符号都可以 struct bucket { int nStrings; char strings[MAXSTRINGS][MAXWORDLENGTH]; }; void func() { char **tArray; int tLenArray = 0; for(i=0; i<TOTBUCKETS-1; i++) {

嗨,我正在尝试将二维数组的内容存储到临时数组中。。。。怎么可能。。。我不想在这里循环,因为这会增加额外的开销。。任何指针符号都可以

struct bucket
{
   int nStrings;       
   char strings[MAXSTRINGS][MAXWORDLENGTH];
};

void func()
{
   char **tArray;
   int tLenArray = 0;
   for(i=0; i<TOTBUCKETS-1; i++)
   {
      if(buck[i].nStrings != 0)
      {
         tArray = buck[i].strings;
         tLenArray = buck[i].nStrings;
      }
   }
}

The error here i am getting is:-
[others@centos htdocs]$ gcc lexorder.c
lexorder.c: In function âlexSortingâ:
lexorder.c:40: warning: assignment from incompatible pointer type
struct bucket
{
int-nStrings;
字符字符串[MAXSTRINGS][MAXWORDLENGTH];
};
void func()
{
煤焦焦油;
int-tLenArray=0;

对于(i=0;i您的意思是克隆数组对吗?
不幸的是,我不认为有一种方法可以在不遍历数组中的所有项并在其他地方复制它们的情况下在C中克隆数组。

主要的问题是,因为它们是指针,所以只要复制内容,就会复制地址,并且会有一个引用,而不是克隆。

你的意思是克隆数组,对吗?
不幸的是,我不认为有一种方法可以在不遍历数组中的所有项并在其他地方复制它们的情况下在C中克隆数组。

主要的问题是,因为它们是指针,所以只要简单地复制内容,你所做的任何事情都只会复制地址,你就会有一个引用,而不是一个克隆。

你可以使用
memcpy
或将其包装在
struct
中,并在结构上使用赋值,但不管你怎么做,你都会有效地循环所有元素这是基本的。

您可以使用
memcpy
或将其包装在
struct
中,并在结构上使用赋值,但无论如何,您都将有效地循环所有元素。这是基本的。

编译器的问题是符号数组[…]与char**不同。char**表示法是指向指针的指针

比如,

char ** pA;
pA = malloc(10);
pA[0]是一个指针

对于数组[…][…]

数组[0]不是指针。它是字符

如果您想做您正在尝试的事情,那么您需要将字符串声明为char**并像这样初始化您的结构

struct bucket
{
    int nStrings;       
    char** strings;
};

struct bucket buck;

buck.strings = (char **)malloc(MAXSTRINGS);

for(i = 0; i < MAXSTRINGS; i++)
    buck.strings[i] = (char*)malloc(MAXWORDLENGTH)
struct bucket
{
int-nStrings;
字符**字符串;
};
结构桶巴克;
buck.strings=(char**)malloc(MAXSTRINGS);
对于(i=0;i
编译器的问题是符号数组[…][…]与char**不同。char**符号是指向指针的指针

比如,

char ** pA;
pA = malloc(10);
pA[0]是一个指针

对于数组[…][…]

数组[0]不是指针。它是字符

如果您想做您正在尝试的事情,那么您需要将字符串声明为char**并像这样初始化您的结构

struct bucket
{
    int nStrings;       
    char** strings;
};

struct bucket buck;

buck.strings = (char **)malloc(MAXSTRINGS);

for(i = 0; i < MAXSTRINGS; i++)
    buck.strings[i] = (char*)malloc(MAXWORDLENGTH)
struct bucket
{
int-nStrings;
字符**字符串;
};
结构桶巴克;
buck.strings=(char**)malloc(MAXSTRINGS);
对于(i=0;iBuffor是一个内存块,可以用MycPyType使用,而不是C++的桶是一个内存块,MeMyPyt是C问题,不是C++。