gpt4 book ai didi

c - 如何在c中用参数声明数组大小

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:06 25 4
gpt4 key购买 nike

我正在用 C 编写一个函数,这是我的代码:

char* makeMoves(char oldBoard[], int moveType, int empties, char player){
int oldBoardLength;
oldBoardLength = sizeof(oldBoard) / sizeof(oldBoard[0]);
char result[oldBoardLength];
copyBoard(oldBoard, result);
}

我认为这一行有问题:

char result[oldBoardLength];

如何创建长度为 oldBoardLength 的数组?在 Java 中是这样的:

char[] result = new char[oldBoard.length];

但在 ci 中我不知道如何创建它。谁能帮帮我?

最佳答案

在 C 中,您必须在这种情况下分配动态存储。

char *result = malloc(oldBoardLength);
copyBoard(oldBoard, result);
free(result);

但是,您必须将 oldBoardLength 传递给函数,因为像 arr[]arr[8] 这样的参数总是会衰减为指针。在指针上使用 sizeof 并不是您想要的。看看这个例子的输出:

#include <stdio.h>

#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))

long int test(char array[16]) {
return COUNT_OF(array);
}

void main(void) {
char a[16];
printf("%ld\n", COUNT_OF(a)); // prints 16
printf("%ld\n", test(a)); // prints 8 or 4 for 64bit or 32bit systems
}

关于c - 如何在c中用参数声明数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30083518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com