Посмотрите на пользовательский ввод в коде C и C++ (внутри цикла for). Мы используем * (p + i) для ввода пользователем в C++ и (p + i) в C. В чем причина отсутствия * в C? Plz объясните! Посмотрите на COMMENT линии ... внутри для циклаДинамическое выделение памяти массива в C & C++
#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;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
printf("Ent size!\n");
scanf("%d",&n);
int *p=(int *)malloc(n*sizeof(int));
int i;
for(i=0;i<n;i++)
scanf("%d",(p+i));//LOOK AT THIS LINE
printf("-------\n\n");
for(i=0;i<n;i++)
printf("%d\n",(p+i));
return 0;
}
Почему вы ожидаете, что они будут такими же ???? 'scanf' и' std :: cin' - это не одно и то же. – mathematician1975
И в Python вы пишете 'array [i] = input()' (да, это не совсем то же самое). Так в чем смысл? Различные языки имеют разные способы выполнения определенной задачи. – Olaf
Если вы написали эти обращения к массиву, как здравомыслящий человек, C++ будет 'cin >> p [i];' и C будет 'scanf ("% d ", &p[i]);'. Код C++ ожидает объект и C функция ожидает адрес. – Blastfurnace