程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么数组的 char* 指向整个数组而不是地址?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么数组的 char* 指向整个数组而不是地址??

开发过程中遇到为什么数组的 char* 指向整个数组而不是地址?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么数组的 char* 指向整个数组而不是地址?的解决方法建议,希望对你解决为什么数组的 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,请注明来意。
标签:char*