繁体   English   中英

与printf一起使用时,C中的char *和int *之间的区别

[英]difference between char* and int* in C when used with printf

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

考虑一下代码:

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

为什么我必须传递*b才能获得要打印的值,但是如果我只给c给出字符串,则printf仍会打印“ hello”?

这就是说明者的意思:

  • %s一个指向char的指针,因此您不必取消引用它, printf
  • %d想要一个真正的整数,这样你必须取消对它的引用

这就是printf一直以来都是的。

因为那是printf的定义方式。

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

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

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

字符串是一种特殊情况。 C中的字符串是内存中的字符序列,可通过指向其第一个元素的指针进行访问。 因此,您需要给printf该指针,以便它可以读取整个字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM