C练习测试Ints和Char阵列

时间:2012-04-29 17:38:12

标签: c

我在练习测试中被问到这个问题,没有发布答案。我无法测试代码,但它让我很困惑。能不能帮助我解决问题,不仅仅是为什么。

int foo() {
    int a = 1;
    char b[] = "zapples";
    a = *(b + 1);
    if (a == 'a') return 1;
    else return 0;
}
What does foo return? ____ 

2 个答案:

答案 0 :(得分:1)

他们是否教你如何使用C指针?

我不打算直截了当地回答你,但想一想:

b的起始地址为字符串“zapples”。这意味着b[0]指向“z”。另一种表示法是*(b + 0),即“地址b中包含的值,偏移量为0。”有了这些信息,{{1}的值是多少}?

这应该足以解决这个问题。

答案 1 :(得分:0)

它将返回1.

a = *(b + 1)是重要的一行。它将b作为指向数组中第一个元素的指针,并添加一个指向第二个元素的指针。然后将其解除引用,以便将该地址“a”的值分配给变量a