传递init_node函数第5个参数时出现不兼容指针类型错误求助
解决传递init_node第5个参数时的指针类型不兼容错误
错误根源
你传入的initial_req_item和函数定义要求的REQ_ITEMS类型不匹配:
- 函数
init_node的第5个参数REQ_ITEMS定义为char [MAX_ANSWER_COUNT][100],第二维长度固定为100 - 你声明的
initial_req_item是char [MAX_ANSWER_COUNT][10],第二维长度为10
在C语言中,二维数组作为参数传递时,第二维的长度是指针类型的组成部分,长度不匹配就会触发incompatible pointer types错误。
另外需注意:函数第6个参数REQ_VALS是char [MAX_ANSWER_COUNT],但你传入的initial_req_val是int [MAX_ANSWER_COUNT],这同样属于类型不兼容,后续运行必然出现问题,必须同步修正。
解决方案
两种修正方式任选其一即可:
方式一:调整数组定义,匹配函数参数
修改initial_req_item的第二维长度为100,和函数参数要求一致:
char initial_req_item[MAX_ANSWER_COUNT][100] = {" ", "свиня", "меч"};
同时修正第6个参数的类型——因为你传入的initial_req_val存的是数值,应把函数定义里的REQ_VALS改为int类型:
TreeNode* init_node(char NPC[500], char PLAYER[MAX_ANSWER_COUNT][100], int cycle, int IS_REQ[MAX_ANSWER_COUNT], char REQ_ITEMS[MAX_ANSWER_COUNT][100], int REQ_VALS[MAX_ANSWER_COUNT])
方式二:修改函数参数,匹配数组定义
如果不想调整数组长度,就把函数中REQ_ITEMS的第二维改为10:
TreeNode* init_node(char NPC[500], char PLAYER[MAX_ANSWER_COUNT][100], int cycle, int IS_REQ[MAX_ANSWER_COUNT], char REQ_ITEMS[MAX_ANSWER_COUNT][10], int REQ_VALS[MAX_ANSWER_COUNT])
同样要将第6个参数REQ_VALS改为int类型,和你传入的initial_req_val类型匹配。
内容的提问来源于stack exchange,提问作者ViktorAlexiev
相关产品推荐
相关产品推荐

