【问题标题】:Why does this for-loop with a pointer not go anywhere?为什么这个带有指针的for循环不去任何地方?
【发布时间】:2016-09-17 23:44:27
【问题描述】:

我正在尝试学习 C 中的指针,这是我编写的一些代码来测试它:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int m = 4;
    int *n;
    n = &m;

    printf("%d\n",*n);

    for (*n = 0; *n < 100; *n++){
        printf("%d\n",*n);
    }
}

正如预期的那样,第一部分打印了 4。但循环没有超过 4,并且没有达到 100,因为我试图做到这一点。

【问题讨论】:

  • 您的 运算符优先级 有问题(查一下!)。您的代码调用未定义的行为。使用调试器查看代码中实际发生的情况(逐行)。
  • 我对 C 很陌生;我不知道你的意思。我确实在网上看到了关于从右到左的东西,但不清楚。但是,我将 ++ 移到了 *n 所在的位置,它运行了。但我需要能够复制这个
  • *n++ --> (*n)++++*n
  • ++*n 意味着非常不同的东西。这无关紧要,但至关重要您了解这个问题。我给了你一些研究。任何程序员都必须自己思考。那是一个好的开始!

标签: c loops pointers


【解决方案1】:

连同其他人建议的指针符号修复,我将编写此示例,以便它在循环中打印m,而不是*n,因此您可以看到操作*n确实对它指向的变量:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int *n, m = 4;

    n = &m;

    printf("%d\n", *n);

    for (*n = 0; *n < 100; (*n)++)
    {
        printf("%d\n", m);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 2012-01-17
    • 2013-12-13
    相关资源
    最近更新 更多