對於作業分配,我不允許使用任何變量,如「int i = 0;」 - 只有指針。循環做n次沒有int i = 0?
問題是我需要做n次 - 比方說10次 - 但我無法找到一種方法來做到這一點,說n次沒有for循環。它操作一個指向整數的指針,它不會被零終止,但大小總是相同的(比如說10)。
有沒有辦法做到以下操作,而不使用整數來控制循環?
int i;
for (i = 0; i < 10; i++) {
*(p + i) = 0;
}
對於作業分配,我不允許使用任何變量,如「int i = 0;」 - 只有指針。循環做n次沒有int i = 0?
問題是我需要做n次 - 比方說10次 - 但我無法找到一種方法來做到這一點,說n次沒有for循環。它操作一個指向整數的指針,它不會被零終止,但大小總是相同的(比如說10)。
有沒有辦法做到以下操作,而不使用整數來控制循環?
int i;
for (i = 0; i < 10; i++) {
*(p + i) = 0;
}
也許是這樣的:
int *q = p + 10;
while (p != q) {
*p++ = 0;
}
UPDATE:
這樣做,你會避免只確定一個開始(p)和結束(P + 10)使用整數,然後就迭代它們。 它不適用於這種特殊情況,但很多時候你不知道(或需要知道)數組的大小。
雖然是正確的,但只需向人們提供答案而不至少解釋解決方案的工作原理可能並不明智。 –
@Insilico你是對的,我傾向於這樣做。感謝您的觀察。 :) – imreal
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p = (int*)malloc(sizeof(int));
for(*p = 0; *p < 10; (*p)++)
printf("%d\n", (*p));
}
這聽起來像是一個遞歸函數的工作!
這項任務是否說你必須使用循環?因爲如果沒有,你可以簡單地做:'memset(p,0,sizeof(int)* 10)'。 –