我想知道是否可以做这样的事情: 如果数字是偶数,则定义一个字符串变量“replace”,其等于先前定义的数组“arraya”的名称,然后在 for 循环的设置中使用包含字符串 arraya 的变量“replace”,并且还将数组与另一个变量进行比较。下面的代码不起作用,但它可能有助于解释我的疑问。
int x = 0;
int y = 0;
int arraya[] = {2,4,6};
int arrayb[] = {1,3,5};
if ( x % 2 == 0)
{
string replace = "arraya";
}
else
{
string replace = "arrayb";
}
for (int i = 0, n = sizeof(replace); i < n; i++) //instead of using arraya or arrayb, use replace dependig on the condition
{
if ( x == replace[i]) // same here
{
break;
}
else
{
y++;
}
}
PD:我知道在 C 中,没有字符串,只有字符数组,但在 CS50 中,他们将变量的类型定义为字符串。
最佳答案
这就是你能做的,
int *p;
int len;
if ( x % 2 == 0)
{
p = arraya;
len = sizeof(arraya)/sizeof(arraya[0]);
}
else
{
p = arrayb;
len = sizeof(arrayb)/sizeof(arrayb[0]);
}
for (int i = 0, n = len; i < n; i++)
{
if ( x == p[i]) // same here
...
}
C
中没有隐式字符串类型。而且,如果不对数组对象本身使用 sizeof
,则无法获取数组的长度。此外,您也无法根据字符串的内容获取数组。
您也可以采用另一种方式 - 即抽象出函数中常见的实现逻辑,然后执行以下操作:-
void fun(int *a, int size){
....
}
在main()
中
if ( x % 2 == 0)
{
fun(arraya, sizeof(arraya)/sizeof(arraya[0]));
}
else
{
fun(arrayb, sizeof(arrayb)/sizeof(arrayb[0]));
}
关于C - 在 for 循环的设置中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48934643/