如何指向整个数组

时间:2015-11-25 19:36:52

标签: c arrays pointers

我们如何使用一个新变量,它将是一个数组本身,并将被分配来自另一个数组的所有值? (随叫随到)

例如:

变量myfood是我的。

它有多种选择:香蕉,橙等......

char banana[3]={"sweet","yellow","fruit"};
char orange[3]={"juicy","orange","fruit"};

现在,我对我的食物现在是香蕉。所以我想要的是:

int myfood= banana;

但它不起作用.....

int myfood[]=banana[]; //dont work either

int *myfood

myfood=&banana;

printf(myfood[2]); -------> should equal to 'yellow';

所有这些都不起作用。

因为我正在制作一个大项目。我必须根据你当前使用的东西传递参数。

所以变量是使用的,根据你拥有的东西(它可能是香蕉,苹果等),它将被分配正确的数组。

感谢

2 个答案:

答案 0 :(得分:3)

  

我们如何使用一个新变量,它将是一个数组本身,并将被分配来自另一个数组的所有值?

别。创建指针,它将指向到数组。避免复制!

假设您有这两个数组(我已更正其类型为const char *)。然后创建指针到char *,并将其指向其他数组之一。请记住,数组会降级为指针。

现在使用它,记住数组从索引0开始。:

#include <stdio.h>

const char *banana[3] = {"sweet","yellow","fruit"};
const char *orange[3] = {"juicy","orange","fruit"};

const char **food = banana;

int main(void)
{
    printf("%s\n", food[1]);
    return 0;
}

结果:

yellow

答案 1 :(得分:-5)

const char* banana[3]={"sweet","yellow","fruit"};
const char* orange[3]={"juicy","orange","fruit"};
const char** food = banana;
cout << food[2] << endl;    // "fruit"