[英]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.