首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++动态内存分配(char[]和int[])

C++动态内存分配(char[]和int[])
EN

Stack Overflow用户
提问于 2020-08-14 12:37:55
回答 5查看 661关注 0票数 0

str是一个指针,为什么不使用str作为输入和输出?不是*str

p是一个指针,为什么使用*p作为输入和输出?不是p

代码语言:javascript
运行
复制
#include<iostream>
using namespace std;

int main()
{
   
    char* str = new char[20];
    cin>>str;
    cout<<str<<endl;
    delete []str;

    int* p = new int[3];
    cin>>*p;
    cout<<*p<<endl;
    delete []p;

    return 0;
}
EN

Stack Overflow用户

发布于 2020-08-14 12:54:42

最好重写这个代码片段。

代码语言:javascript
运行
复制
int* p = new int[3];
cin>>*p;
cout<<*p<<endl;
delete []p;

喜欢

代码语言:javascript
运行
复制
int* p = new int;
cin>>*p;
cout<<*p<<endl;
delete p;

因为只使用了分配的数组中的一个对象,该数组包含三个int类型的对象。

在第一种情况下,您处理的是接受或存储字符串的字符数组。例如,对于字符数组,操作符>>声明如下

代码语言:javascript
运行
复制
template<class charT, class traits>
basic_istream<charT,traits>& operator>>(basic_istream<charT,traits>&,
charT*);

也就是说,运算符不仅需要访问数组的第一个字符,还需要使用指针算法访问数组的后续字符。运算符不更改传递的指针。它更改指针所指向的类型字符的对象。

对于int类型的对象,操作符>>声明如下

代码语言:javascript
运行
复制
basic_istream<charT,traits>& operator>>(int& n);

通过引用传递一个标量对象就足以使用操作符来更改它。

票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63412908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档