指针算术(不是问题,而是一种测验)

时间:2011-04-20 12:56:16

标签: c++ c pointers programming-languages logic

这不是我要问的问题,但我在重构一些实验代码时发现了这个问题,所以想到在这里发帖。

int *p = <assign some memory>
p[0] = 3;
int n = 24;

printf(" %d ", n/*p);

输出是什么?

3 个答案:

答案 0 :(得分:7)

  1. 这将导致编译错误(/*p);是评论的开头)
  2. 如果它像printf(" %d ", n / *p);,则应打印8。

答案 1 :(得分:2)

你可能要做的事情的答案就像其他人所说的一样。您可能希望下次重新进行测验。

int three = 3;
int *p = &three;
int n = 24;

printf(" %d ", n / *p);

答案 2 :(得分:1)

假设你的意思是“n /(* p)”,它是合法的(如果部分分配了一个int)。 “p [0] = 3”将3放在单长度数组p的唯一单元格中。所以“* p”可以看作是一个int,实际上是p [0](参见通常的数组算法)。所以这将打印24/3 = 8。