使用Malloc并在函数之间分配给数组
我在第4行发现了这个错误,上面写着“无效的初始值设定项”。我知道这个错误是什么意思,但我不明白为什么我会出错。我尝试了各种指针和值的组合,但似乎不起作用。如果您对代码有任何帮助/反馈,我们将不胜感激 注意:我计划为棋盘准备一个2D数组,这意味着64整数的内存malloc'd。 printf的存在是为了让编译器满意,并告诉我[4][2]是否有“0”使用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
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(计数器<总空间)
空白板[计数器++]=空闲;
返回盲板;
}