gpt4 book ai didi

c++ - 字符串类型数组的指针运算,C++是如何处理的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:07 24 4
gpt4 key购买 nike

我正在学习指针,但有一个概念困扰着我。我知道如果你有一个指向数组的 INT 类型的指针(例如'pointer1'),那么你可以用 INTS 填充该数组。如果你想寻址数组的一个成员,你可以使用指针,你可以做pointer1++;遍历数组。该程序知道它是一个 INT 数组,因此它知道以 INT 大小的步长逐步执行。但是,如果数组是长度可以变化的字符串怎么办。当您尝试使用++ 递增时它如何知道要做什么,因为每个元素的长度都不同?

类似地,当您创建一个字符串 vector 并使用 reserve 关键字时,如果字符串的长度可以不同,它如何知道要保留多少?这可能真的很明显,但我无法解决,而且它不符合我当前(可能是错误的)对指针的思考。谢谢

最佳答案

非常简单。

字符串数组不同于字符串 vector 。

字符串数组(C 风格指针)是指向字符数组“char**”的指针数组。因此,字符串数组中的每个元素的大小都是“指向字符数组的指针”,因此它可以毫无问题地遍历字符串数组中的元素。数组中的指针可以指向不同大小的内存块。

对于字符串 vector ,它是一个字符串对象数组(C++ 风格)。每个字符串对象都有相同的对象 大小,但在某处包含一个指向实际存储字符串内容的内存片段的指针。因此在这种情况下, vector 中的元素在大小上也是相同的,尽管不同于“只是一个指向字符数组的指针”,允许简单的元素地址计算。

关于c++ - 字符串类型数组的指针运算,C++是如何处理的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1006172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com