gpt4 book ai didi

c++ - 提高对 char 数组中指针语法的理解

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

我有这个(工作)代码:

char * ptr = new char[10];
cin >> ptr;

输出:cout<<*(ptr+n)来自输入。

为什么 cin>>ptr工作,不应该是cin>>*ptr吗? ?

最佳答案

cin >> ptr;

是这个函数调用的语法糖:

operator >>(std::cin, ptr);

这应该更清楚地表明将有一个与名称 operator >> 关联的重载集。事实上,看着 reference ,我们看到例如这个:

template< class CharT, class Traits>
basic_istream<CharT,Traits>& operator>>( basic_istream<CharT,Traits>& st, CharT* s );

这是您正在调用的函数。它需要一个 std::basic_istream 实例化( std::cin 是)和一个指向底层字符类型的指针(在你的例子中是 ptr ) 并做正确的事。

当你改为调用

operator >>(std::cin, *ptr);

您取消引用指向 char 数组的指针,它返回对该数组第一个元素的引用。有一个重载接受对单个 char 的引用(重载列表中的#1),但它只会读取单个 char ,仅此而已。第一个 char 以外的输入将被丢弃。

关于c++ - 提高对 char 数组中指针语法的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55318127/

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