Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.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/arrays/14.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
使用Malloc并在函数之间分配给数组_C_Arrays_Function_Pointers_Malloc - Fatal编程技术网

使用Malloc并在函数之间分配给数组

使用Malloc并在函数之间分配给数组,c,arrays,function,pointers,malloc,C,Arrays,Function,Pointers,Malloc,我在第4行发现了这个错误,上面写着“无效的初始值设定项”。我知道这个错误是什么意思,但我不明白为什么我会出错。我尝试了各种指针和值的组合,但似乎不起作用。如果您对代码有任何帮助/反馈,我们将不胜感激 注意:我计划为棋盘准备一个2D数组,这意味着64整数的内存malloc'd。 printf的存在是为了让编译器满意,并告诉我[4][2]是否有“0” int *newBoard(); int main(int argc, char *argv[]) { int *chessBoard

我在第4行发现了这个错误,上面写着“无效的初始值设定项”。我知道这个错误是什么意思,但我不明白为什么我会出错。我尝试了各种指针和值的组合,但似乎不起作用。如果您对代码有任何帮助/反馈,我们将不胜感激

注意:我计划为棋盘准备一个2D数组,这意味着64整数的内存malloc'd。 printf的存在是为了让编译器满意,并告诉我[4][2]是否有“0”

int *newBoard();    
int main(int argc, char *argv[]) {

   int *chessBoard[7][7] = *newBoard();
   printf ("%d", chessBoard[4][2]);

   return EXIT_SUCCESS;
}

int *newBoard() {

   int counter = 0;
   int *blankBoard = malloc(sizeof((int) * TOTALSPACES));

   while (counter < TOTALSPACES) {
      blankBoard[counter] = VACANT;
      counter++;
   }

   return blankBoard;
}
int*newBoard();
int main(int argc,char*argv[]){
int*棋盘[7][7]=*新棋盘();
printf(“%d”,棋盘[4][2]);
返回退出成功;
}
int*newBoard(){
int计数器=0;
int*blankBoard=malloc(sizeof((int)*TOTALSPACES));
while(计数器<总空间){
空白板[柜台]=空置;
计数器++;
}
返回盲板;
}

newBoard
返回TOTALSPACES整数数组<代码>int*棋盘[7][7]=*新棋盘()LHS是一个7x7整数指针数组(不是整数)。RHS是什么,调用返回的int指针的内容?(您认为调用
newBoard()
之前的
*
在做什么


无论是
int*newBoard=newBoard();
(使用堆内存)还是
int-newBoard[7][7];
(使用堆栈内存)都可以。您正在尝试每种方法的一半!

int*chessBoard[7][7]
代表二维数组(7*7),每个元素类型都是
int*
; 但是
*newBoard()
代表一个int元素。

\include
#include <stdio.h>
#include <stdlib.h>

#define TOTALSPACES 8*8
#define VACANT '0'

void *newBoard();

int main(int argc, char *argv[]) {

    int (*chessBoard)[8][8] = newBoard();
    printf ("%d", (*chessBoard)[4][2]);//48 : '0'

    return EXIT_SUCCESS;
}

void *newBoard() {
    int *blankBoard = malloc(sizeof(int) * TOTALSPACES);
    int counter = 0;

    while (counter < TOTALSPACES)
        blankBoard[counter++] = VACANT;

    return blankBoard;
}
#包括 #定义TOTALSPACES 8*8 #定义空的“0” void*newBoard(); int main(int argc,char*argv[]){ int(*棋盘[8][8]=新棋盘(); printf(“%d”,(*棋盘)[4][2]);/48:'0' 返回退出成功; } void*newBoard(){ int*blankBoard=malloc(sizeof(int)*TOTALSPACES); int计数器=0; while(计数器<总空间) 空白板[计数器++]=空闲; 返回盲板; }