int getPositionsH(int r, int ans, int size){
int x=0;
int y=0;
if (ans==9){
x =0;
} else
x=(rand()%size);
y=(rand()%10);
return x;
return y;
}
基本上这是c中应该返回2的函数 随机生成的位置x和y。但是在调试时我 注意到执行此操作后x和y仍为空。不知道 为什么因为我写了回报和一切。有什么想法吗?任何帮助 赞赏。
答案 0 :(得分:4)
一个函数只能在C中返回一个值。实际上,该函数只返回x
而语句return y;
没有效果 - 它是无法访问的代码。
如果要返回多个值,可以传递指针并返回其内容中的值,也可以构造一个struct并返回值。
typedef struct position {
int x;
int y;
}pos_type;
pos_type getPositionsH(int r, int ans, int size){
pos_type p;
int x=0;
int y=0;
if (ans==9){
x =0;
} else
x=(rand()%size);
y=(rand()%10);
p.x = x;
p.y = y;
reutrn p;
}
并且在来电者中:
pos_type t = getPositionsH(...);
int x = t.x;
int y = t.y;
.....
答案 1 :(得分:1)
你不能以这种方式返回两个值。
int getPositionsH(int r, int ans, int size)
被声明为int返回值将只返回一个 int
return x;
return y;
返回x后,程序执行将从函数返回,因此返回y 将无法访问。
答案 2 :(得分:0)
使用指针 x 和 y 。该函数不是返回值,而是设置值:
void getPositionsH(int r, int ans, int size, int *x, int *y) {
*x = ans == 9 ? 0 : rand() % size;
*y = rand() % 10;
}
被称为
int x,y;
getPositionsH(r, ans, size, &x, &y);
// use x and y as you wish...
int total = x + 7 * y;
getPositionsH 被赋予两个指针(地址)到x和y。使用*x =
设置 x 的值(在函数调用之前声明)。
在
*x = ans == 9 ? 0 : rand() % size;
语句相当于
if (ans == 9) *x = 0;
else *x = rand() % size;
答案 3 :(得分:0)