首页 > 解决方案 > C++ 动态内存分配(char[] 和 int[])

问题描述

 <code>str 是一个指针,为什么不str用于输入和输出呢?不是*str
 <code>p 是一个指针,为什么要*p用于输入和输出?不是p

#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;
}

标签: c++charintoperator-overloadingnew-operator

解决方案


char* str = new char[20];
cin>>str;

您将指针传递给一系列字符,cin因为cin预计会在指针指向的位置读取多个字符。

int* p = new int[3];
cin>>*p;

您通过引用将单个 int 传递给cin,因为cin预计将读取单个 int。没有读取功能可以读取 int 序列,因为 int 序列不是常见的事情。但是,char 序列是一个 c-string 和一个典型的东西。这就是为什么cin有一个读取 char 指针的重载。


推荐阅读