*(p+i);//请看这一行 CUT> P >由于C++中引用的存在而存在差异。 int类型的对象在C++ >代码>运算符> 中被声明为以下方式 basic_istream<charT,traits>& operator>>(int& n);,c++,c,arrays,dynamic-memory-allocation,dynamic-arrays,C++,C,Arrays,Dynamic Memory Allocation,Dynamic Arrays" /> *(p+i);//请看这一行 CUT> P >由于C++中引用的存在而存在差异。 int类型的对象在C++ >代码>运算符> 中被声明为以下方式 basic_istream<charT,traits>& operator>>(int& n);,c++,c,arrays,dynamic-memory-allocation,dynamic-arrays,C++,C,Arrays,Dynamic Memory Allocation,Dynamic Arrays" />

C&;C++; 查看C和C++代码中的用户输入(内部for for循环)。在C++中使用用户*(p+i)和C中的(p+i)。 请解释!看看评论栏。。。内循环 #include <iostream> using namespace std; int main() { int n,i; cout << "Ent size" << endl; cin>>n; int *p = new int [n]; for(i=0;i<n;i++) cin>>*(p+i);//LOOK AT THIS LINE cout<<"------------\n\n"; for(i=0;i<n;i++) cout<<*(p+i)<<endl; return 0; } #包括 使用名称空间std; int main() { int n,i; cout n; int*p=新的int[n]; 对于(i=0;i>*(p+i);//请看这一行 CUT> P >由于C++中引用的存在而存在差异。 int类型的对象在C++ >代码>运算符> 中被声明为以下方式 basic_istream<charT,traits>& operator>>(int& n);

C&;C++; 查看C和C++代码中的用户输入(内部for for循环)。在C++中使用用户*(p+i)和C中的(p+i)。 请解释!看看评论栏。。。内循环 #include <iostream> using namespace std; int main() { int n,i; cout << "Ent size" << endl; cin>>n; int *p = new int [n]; for(i=0;i<n;i++) cin>>*(p+i);//LOOK AT THIS LINE cout<<"------------\n\n"; for(i=0;i<n;i++) cout<<*(p+i)<<endl; return 0; } #包括 使用名称空间std; int main() { int n,i; cout n; int*p=新的int[n]; 对于(i=0;i>*(p+i);//请看这一行 CUT> P >由于C++中引用的存在而存在差异。 int类型的对象在C++ >代码>运算符> 中被声明为以下方式 basic_istream<charT,traits>& operator>>(int& n);,c++,c,arrays,dynamic-memory-allocation,dynamic-arrays,C++,C,Arrays,Dynamic Memory Allocation,Dynamic Arrays,相当于 cin.operator( *( p + i ) ); 编译器不会创建表达式*(p+i)指定的对象的副本。它使用对象本身,因为对象是通过引用传递的 事实上,在C中还使用了对参数的引用,但它被指定为指针,因为引用的概念在C中没有定义 当有人说某个对象是通过引用传递给C中的函数时,这意味着该对象是使用指向该对象的指针间接传递的。 在C++中,它意味着使用了引用的概念。 因此,如果希望函数scanf将输入数据存储在对象本身中,则必须使用指向对象的指针将其间接传递给函数 scanf("%d",

相当于

cin.operator( *( p + i ) );
编译器不会创建表达式
*(p+i)
指定的对象的副本。它使用对象本身,因为对象是通过引用传递的

事实上,在C中还使用了对参数的引用,但它被指定为指针,因为引用的概念在C中没有定义

当有人说某个对象是通过引用传递给C中的函数时,这意味着该对象是使用指向该对象的指针间接传递的。 在C++中,它意味着使用了引用的概念。

因此,如果希望函数
scanf
将输入数据存储在对象本身中,则必须使用指向对象的指针将其间接传递给函数

scanf("%d",(p+i));
这里的
p+i
是指向对象
*(p+i)
的指针

考虑这两个简单的程序

C++

#include <iostream>

int main()
{
    int x = 10;
    int &rx = x;

    std::cout << "x = " << std::endl;

    rx = 20;

    std::cout << "x = " << std::endl;
}
#包括
int main()
{
int x=10;
int&rx=x;

std::cout为什么您希望它们是相同的???
scanf
std::cin
不是一回事。在Python中,您编写的
array[i]=input()
(是的,这不完全相同)不同的语言有不同的方法来完成某一任务。如果你写的数组访问像一个理智的人,C++将是“代码> CIN > P[i];< /Cord>,C将是代码> SCANF(“%D”,和P[i])。C++代码期望一个对象,C函数期望一个地址。你好,我有一个苹果和一个橙子,但它们不是同一颜色,为什么会这样???
scanf("%d",(p+i));
#include <iostream>

int main()
{
    int x = 10;
    int &rx = x;

    std::cout << "x = " << std::endl;

    rx = 20;

    std::cout << "x = " << std::endl;
}
#include <stdio.h>

int main( void )
{
    int x = 10;
    int *rx = &x;

    printf( "x = %d\n", x );

    *rx = 20;

    printf( "x = %d\n", x );
}