【问题标题】:Loop to do something n times without int i = 0? [closed]在没有 int i = 0 的情况下循环执行 n 次? [关闭]
【发布时间】:2012-10-20 21:32:20
【问题描述】:

对于家庭作业,我不允许使用任何变量,例如“int i = 0;” -- 只有指针。

问题是我需要做 n 次 - 比如说 10 次 - 但我想不出一个方法来做这件事 n 次没有 for 循环。它正在操作一个指向整数的指针,它不会以零结尾,但大小总是相同的(比如说 10)。

有没有办法在不使用整数控制循环的情况下进行以下操作?

int i;
for (i = 0; i < 10; i++) {
    *(p + i) = 0;
}

【问题讨论】:

  • 作业是否说您必须使用循环?因为如果没有,你可以简单地做:memset(p, 0, sizeof(int) * 10).

标签: c pointers for-loop


【解决方案1】:

可能是这样的:

int *q = p + 10;
while (p != q) {
    *p++ = 0;
}

更新:

这样做可以避免使用整数,只需识别开始 (p) 和结束 (p + 10),然后迭代它们即可。 它不适用于这种特殊情况,但很多时候您不知道(或需要知道)数组的大小。

【讨论】:

  • 虽然正确,但在没有至少解释您的解决方案如何工作的情况下简单地向人们提供答案可能是不明智的。
  • @Insilico 你是对的,我倾向于这样做。感谢您的观察。 :)
【解决方案2】:
      #include <stdio.h>
      #include <stdlib.h>
      int main()
      {
        int *p = (int*)malloc(sizeof(int));
        for(*p = 0; *p < 10; (*p)++)
             printf("%d\n", (*p));

      }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多