C语言中能否传递结构体成员给函数?编译报错求助
问题解决:结构体成员作为函数引用参数的错误修正
首先明确编译错误的原因:你在函数参数声明里错误使用了成员访问符.,C++的函数参数声明只能指定类型和参数名,不能直接用.访问结构体成员,这才导致了expected ',' or '...' before '.' token的错误。
你要实现「修改参数后保留新值」的需求完全可行,下面给两种正确的写法:
方法一:传递整个结构体的引用
这是更简洁的方式,直接把整个结构体对象以引用方式传入函数,函数内可以直接修改其成员:
函数声明修改为:
void caracterMoveDown(struct characterPlayer &player1);
函数实现示例:
void caracterMoveDown(struct characterPlayer &player1) { // 示例:让y坐标向下移动(根据你的需求修改逻辑) player1.pozPy += 5; // 如果需要修改x坐标,直接操作player1.pozPx即可 }
调用方式:
// 先初始化结构体变量 struct characterPlayer player1; player1.pozPx = 100; player1.pozPy = 200; // 直接传入结构体对象 caracterMoveDown(player1); // 此时player1的pozPy已经被修改
方法二:单独传递结构体成员的引用
如果只需要修改特定成员,可以直接传递成员的引用,参数类型写成成员的实际类型(这里是int&):
函数声明修改为:
void caracterMoveDown(int &px, int &py);
函数实现示例:
void caracterMoveDown(int &px, int &py) { // 示例逻辑:修改传入的坐标值 py += 5; // px = ...; 如需修改x坐标则添加对应逻辑 }
调用方式:
struct characterPlayer player1; player1.pozPx = 100; player1.pozPy = 200; // 传递结构体的成员变量 caracterMoveDown(player1.pozPx, player1.pozPy); // 此时player1的pozPy已被修改
内容的提问来源于stack exchange,提问作者bexuard
相关产品推荐
相关产品推荐

