2012-03-17 77 views
0

这可能是一个非常基本的问题,但我无法理解它。我需要一个清晰的理解,因此我张贴在这里。与printf一起使用时char *和int *之间的区别

考虑代码:

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

为什么我要通过*b获得价值进行打印,但在字符串中的情况下,如果我只得到C,printf仍然打印出“你好”?

+0

不要问,只是做。 – 2012-05-15 16:07:13

回答

3

这正是该说明符的意思是:

  • %s要指向一个字符,所以你不必取消对它的引用,printf
  • %d想要一个真正的整数,所以你必须对其进行解引用

这就是printf总是那样。

3

因为这就是如何定义printf

但它是有道理的;考虑下面的代码:

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

将相当于码是什么,如果printf通过指针把整数?

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

相关问题