如何获取字符串中特定元素的地址

how to get address of particular element in a string

本文关键字:元素 地址 字符串 何获取 获取      更新时间:2023-10-16

char a[]="helloworld";

我想获取"l"的地址?

(a+2)&a[2]lloworld。添加其他与号会显示错误。

那么如何获取"l"的地址呢?

如果不可能,请解释一下?

a + 2 是数组中第三个元素的地址,即第一个l的地址。

在这个表达式中,a 的类型为 char[11],被隐式转换为指向其初始元素的指针,产生一个类型 char* 的指针,向其添加2,给出数组第三个元素的地址。

&a[2]给出相同的结果。 a[2]等价于*(a + 2),所以完整表达式等价于&*(a + 2)&*相互抵消,留下a + 2,同上。

如何在程序中解释此地址是另一回事。 您可以将其用作"指向单个char对象的指针",在这种情况下,它只是指向第一个l的指针。 但是,您也可以将其解释为"指向数组中包含的 C 字符串的指针,从指向的char开始,在这种情况下,您会得到"lloworld" 。 这取决于您获得指针后如何使用指针。

两者都是正确的,但如果你想输出它,你必须:

    对于 C
  • :使用适当的格式字符串(对于 C): printf("address: %pn", &a[2]);

  • 对于C++:通过强制转换为void*来避免 COUT 的字符串解释: cout << "address: " << static_cast<void*>(&a[2]) << endl;

我想你想要strchr

char *lAddress = strchr(a, 'l');

这将指向l的开始。您可以使用printf %p描述符打印此内容。

strchr将返回指向字符串中给定字符第一次出现的指针(地址)。

你的意思是它放弃了"lloworld"。如果您将其用作 C 字符串,它仍将以 null 结尾。只是在句子中再进一步开始。