【发布时间】:2021-04-03 18:09:42
【问题描述】:
在学习 C 时,我编写了一个程序,其中我使用数组的名称作为指针并将其用作输入。为了更容易理解,下面是程序的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, n, *arr,*p1,*p2,temp;
printf("Enter the number of elements: ");
scanf("%d", &n);
arr = calloc(n, sizeof(int));
for(i=0;i<n;i++){
printf("Enter the %d. element of the array: ", i+1);
scanf("%d", arr+i);
}
printf("\n\n");
printf("Original array output: \n");
for(i=0;i<n;i++){
printf("%d ", *(arr+i));
}
printf("\n\n");
printf("Output of the array in reverse: \n");
for(i=0;i<n/2;i++){
p1 = arr+i;
p2 = arr+(n-1)-i;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
for(i=0;i<n;i++){
printf("%d ", *(arr+i));
}
free(arr);
return 0;
}
正如您在第 15 行中看到的那样,使用 scanf("%d", arr+1) 输入元素,然后将其输出为 printf("%d.", *(arr+1))。有没有办法在 C++ 中使用相同的 arr+1 指针输入元素?我不断收到“与运算符不匹配>>”错误。
【问题讨论】:
-
您在代码中使用
arr+i,但在代码后面的解释中使用arr+1。你的意图是什么? -
请显示导致问题的 C++ 代码。可能你只是缺少括号或类似的东西。
-
附带说明:在不检查返回值的情况下使用
scanf是不安全的。有关详细信息,请参阅此页面:A beginners' guide away from scanf() -
代码在 C++ 中也能正常工作。但是,如果您想以 C++ 方式执行此操作,并将
scanf替换为cin >>,那么您也不应该使用原始数组,而是使用vector<int>。 -
@dxiv 你错了。
arr = calloc(n, sizeof(int));行将被拒绝为 C++。