gpt4 book ai didi

C - 不兼容的指针类型 - 使用数组

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

我试图将一个指向数组的指针传递给我的函数 GetAgent 并修改那里的值,然后我在主函数上调用我的 func。我收到错误:

我尝试 array = &layout 但它显示的字面意思是一样的。

我基本上是在尝试构建一个环形网格,代理在网格上随机生成,我必须找到围绕他的 8 个最近的位置。

main.c: In function 'GetAgent':
main.c:10:13: error: subscripted value is neither array nor pointer nor vector
array[i][j] = array[i % xdim][j % ydim];

main.c:10:34: error: subscripted value is neither array nor pointer nor vector
array[i][j] = array[i % xdim][j % ydim];

main.c: In function 'main':
main.c:25:11: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types] array = layout;

代码如下:

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

#define xdim 20
#define ydim 20

void GetAgent(int i, int j, char *array)
{
array[i][j] = array[i % xdim][j % ydim];
}

int main(){
//FILE *fp;
//fp = fopen("file.ini", "r");
//fscanf(fp, "%d %d", &xdim, &ydim);

srand((unsigned) time(NULL));
int x = (rand() % 20);
int y = (rand() % 20);

char layout[xdim][ydim];
char *array;
array = layout;

for (int i = 0; i < xdim; i++){
for (int j = 0; j < ydim; j++ ){
if (i == x && j == y){
layout[i][j] = 'x';
} else {
layout[i][j] = '.';
}
}
}
for (int i = 0; i < xdim; i++){
for (int j = 0; j < ydim; j++){
if (i == x && j == y){
for (int z = 1; z < 2; z++){
for (int t = 1; t < 2; t++){
GetAgent(i, j, array);
layout[x][y + t] = '1';
GetAgent(i, j, array);
layout[x + z][y + t] = '2';
GetAgent(i, j, array);
layout[x + z][y] = '3';
GetAgent(i, j, array);
layout[x + z][y - t] = '4';
GetAgent(i, j, array);
layout[x][y - z] = '5';
GetAgent(i, j, array);
layout[x - z][y - t] = '6';
GetAgent(i, j, array);
layout[x - z][y] = '7';
GetAgent(i, j, array);
layout[x - z][y + t] = '8';
}
}
}
}
}
for (int i = 0; i < xdim; i++){
for (int j = 0; j < ydim; j++ ){
printf("%c ", layout[i][j]);
}
printf("\n");
}
}

最佳答案

你可能不了解 C 中的数组和指针。

但是如果你想传递 char * 指针并像二维数组一样索引引用的对象 - 当然你可以变通。

array[i + j*xdim] = array[(i % xdim) + (j % ydim) * xdim];

我从这个任务的逻辑中抽象出来。

关于C - 不兼容的指针类型 - 使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48123994/

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