我想知道它是否有可能做这样的事情: 如果数字是偶数定义一个字符串变量“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中,它们将变量的类型定义为字符串。
答案 0 :(得分:0)
这是你可以做的,
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
中没有implcit字符串类型。而且,如果不在数组对象本身上使用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]));
}