arrays - 如何将双指针传递给C中的数组元素?
问题描述
所以我在这里有这个结构:
typedef struct piece
{
block* blocks;
unsigned short numOfBlocks;
unsigned short color;
unsigned short width;
unsigned short height;
signed short minX;
signed short minY;
} piece;
每一块都有一个指向块数组的指针。这是我制作的另一个结构。
此外,我还有一个函数可以在运行时动态创建这些片段,看起来像这样:
piece* generateGamePiece(unsigned short size)
{
piece* Piece = NULL;
Piece = malloc(sizeof(*Piece));
if (Piece != NULL)
{
if (size > 0)
Piece->blocks = malloc(size * sizeof(*Piece->blocks));
}
...
return Piece;
}
为了释放这些部分分配的内存,我有一个如下所示的 delPiece 函数:
void delPiece(piece** Piece)
{
free((*Piece)->blocks);
(*Piece)->blocks = NULL;
free(*Piece);
*Piece = NULL;
}
所以我可以像这样轻松地创建和销毁单件:
piece* newPiece = NULL;
newPiece = generateGamePiece(5);
...
delPiece(&newPiece);
但是,如果我有一个指向函数返回的片段数组的指针,则如下所示:
piece* pieceArray = NULL;
pieceArray = generatePieceAray();
然后我尝试删除数组中的每一块:
for (unsigned short i = 0; i < NUM_OF_PIECES; i++)
delPiece(&pieceArray[i]);
free(pieceArray);
pieceArray = NULL;
我收到一个编译器警告,在“delPiece(&pieceArray[i]);”行中,函数“预期为 'piece **' 但参数的类型为 'piece *'”
我该如何解决这个问题?将指针传递给指向数组元素的指针的正确方法是什么?
解决方案
推荐阅读
- python - 如何重新排列列表以使它们按升序排列?
- php - 通过php代码将文件从一个位置复制到同一服务器中的另一个位置
- excel - 基于2列的分类和日期数据返回总和的Excel公式?
- r - 如何将值转换为用冒号分隔的含义(双点)
- ansible - Ansible:并行部署剧本时出错
- python - 获得正确的 IMU 值
- c++ - 带有 abi:cxx11 的 GCC 未定义引用
- ios - firebase 是否可以根据电话数据或其他表单创建用户,避免在应用程序上注册以进行身份验证?
- c++-cli - 如何在 C++/CLI 中包装 C++ boost::variant 以授予来自 .NET 的访问权限
- java - wait() 不会保存应用程序的进度