大佬教程收集整理的这篇文章主要介绍了为什么数组的 char* 指向整个数组而不是地址?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在这里看到过一些类似的问题,但一直找不到简明的答案。
在学习指针的过程中,我明白了 在这种情况下
int test=1; int* p = &test;
用 printf("%p",p);
打印 "p" 会给出 test 的地址,而用 printf("%d",*p);
打印 *p 会给出 test 的实际值,也就是 ptr p 指向的值。
现在,为了用字符来做这件事,做
char word[] = "test"; char* ptr = &word[0];
然后用 printf("%s",ptr);
打印 ptr 给出输出“test”,但我希望它给出 word[0]
的地址。
我发现如果我执行 printf("%p",ptr);
,它确实会打印地址。
所以我的问题是,这个指针是否同时包含数组 test[]
的地址和值?或者 printf 只是根据您使用的 %s
或 %p
中的哪一个来获取它需要的内容,在这种情况下,为什么不能在我之前的示例中执行 printf("%d",test);
并得到测试的价值而不是地址?事实是我使用 %s 自动输出整个数组,因为它从那个地址开始?
%s
告诉 printf
获取它给定的指针并打印那里的第一个字符,然后是后面的字符,然后是后面的字符,依此类推,直到 {{1} } 查找空字符(值为零的字符)。
所以,这与指向“整个数组”的指针无关。指针只指向一件事。它是关于给予 printf
的命令。 printf
表示“打印指针的值”。 %p
表示“在指向的位置打印字符。”
...为什么你不能在我之前的例子中执行 %s
并获得 test 的值而不是地址?
printf("%d",test);
是一个命令 %d
打印它传递的 printf
的值。你不应该为此传递一个指针,因为 int
期待一个 printf
。这正是命令的用途。
以上是大佬教程为你收集整理的为什么数组的 char* 指向整个数组而不是地址?全部内容,希望文章能够帮你解决为什么数组的 char* 指向整个数组而不是地址?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。