我在练习测试中被问到这个问题,没有发布答案。我无法测试代码,但它让我很困惑。能不能帮助我解决问题,不仅仅是为什么。
int foo() {
int a = 1;
char b[] = "zapples";
a = *(b + 1);
if (a == 'a') return 1;
else return 0;
}
What does foo return? ____
答案 0 :(得分:1)
他们是否教你如何使用C指针?
我不打算直截了当地回答你,但想一想:
b
的起始地址为字符串“zapples”。这意味着b[0]
指向“z”。另一种表示法是*(b + 0)
,即“地址b
中包含的值,偏移量为0
。”有了这些信息,{{1}的值是多少}?
这应该足以解决这个问题。
答案 1 :(得分:0)
它将返回1.
行a = *(b + 1)
是重要的一行。它将b作为指向数组中第一个元素的指针,并添加一个指向第二个元素的指针。然后将其解除引用,以便将该地址“a”的值分配给变量a
。