【问题标题】:difference between char* and int* in C when used with printf与 printf 一起使用时,C 中 char* 和 int* 的区别
【发布时间】:2012-03-17 11:10:53
【问题描述】:

这可能是一个非常基本的问题,但我无法理解。我需要一个清晰的了解,因此在这里发布。

考虑代码:

char *c = "hello";
int   a = 10;
int  *b = &a;
printf("%s\t%d\n", c, *b);

为什么我必须通过 *b 才能获得要打印的值,但如果我只是给 c printf 仍然打印“hello”?

【问题讨论】:

    标签: c pointers printf


    【解决方案1】:

    这正是说明符的意思:

    • %s 想要一个指向字符的指针,所以你不必取消引用它,printf
    • %d 想要一个真正的整数,所以你确实必须取消引用它

    这正是printf 一直以来的样子。

    【讨论】:

      【解决方案2】:

      因为这就是 printf 的定义方式。

      但这是有道理的;考虑以下代码:

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

      如果printf 通过指针获取整数,等效代码是什么?

      字符串是一种特殊情况; C 中的字符串是内存中的字符序列,通过指向其第一个元素的指针访问。所以你需要给printf那个指针,这样它就可以读取整个字符串。

      【讨论】:

        猜你喜欢
        • 2015-04-05
        • 1970-01-01
        • 1970-01-01
        • 2013-01-18
        • 1970-01-01
        • 2015-01-13
        • 2014-09-10
        • 2016-09-11
        • 1970-01-01
        相关资源
        最近更新 更多