0

宿題の場合、「int i=0;」のような変数を使用することは許可されていません。-ポインタのみ。

問題は、何かをn回(たとえば10回)実行する必要があることですが、forループなしでこれをn回実行する方法がわかりません。整数へのポインタを操作しており、ゼロで終了することはありませんが、サイズは常に同じです(たとえば、10)。

ループを制御するために整数を使用せずに次の操作を実行する方法はありますか?

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

2 に答える 2

6

多分このように:

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

アップデート:

これを行うと、開始(p)と終了(p + 10)を識別し、それらを反復処理するだけで整数の使用を回避できます。これはこの特定のケースには当てはまりませんが、多くの場合、配列のサイズがわからない(または知る必要があります)。

于 2012-10-20T21:35:51.247 に答える
0
      #include <stdio.h>
      #include <stdlib.h>
      int main()
      {
        int *p = (int*)malloc(sizeof(int));
        for(*p = 0; *p < 10; (*p)++)
             printf("%d\n", (*p));

      }
于 2012-10-20T21:44:01.087 に答える