【发布时间】:2010-08-27 15:43:22
【问题描述】:
我有以下代码部分:
typedef struct Board* BoardP;
typedef struct Board {
int _rows;
int _cols;
char *_board;
} Board;
char* static allocateBoard(BoardP boardP, int row, int col) {
boardP->_rows = row;
boardP->_cols = col;
boardP->_board = malloc(row * col * sizeof(char));
return boardP->_board;
}
我似乎无法弄清楚为什么会出现错误 预期标识符或“静态”之前的“(” 在我将返回类型更改为 char* 后,它给出了错误。当它无效时没有给出错误。
还有一个问题:有人告诉我,使用 malloc 时需要强制转换,但是,如果没有强制转换,这似乎可以正常工作。这种情况下需要吗?
谢谢
【问题讨论】:
-
在 C 中,从 malloc 中强制转换返回不仅是不必要的,而且是不可取的,因为它可以掩盖忘记到
#include <stdlib.h>的错误。 -
返回 char* 的目标是什么?这不是 C 错误,但我不明白为什么初始化对象的函数应该返回任何数据。
标签: c