我试图将数组元素与5相乘,但我得到的错误是core dumped,如果没有,那么,它只将5与第一个元素相乘。
下面是代码。
#include <iostream>
using namespace std;
int ptr_multiply(int[],int);
int main(){
int size;
cout<<"Enter the size of an array ==";
cin>>size;
int arr[size];
cout<<"Enter the elements of array ==";
for (int i=0;i<size;i++){
cin>>arr[i];
}
ptr_multiply(arr,size);
}
int ptr_multiply(int a1[],int s1){
int *ptr;
for (int i=0;s1;i++)
{
*ptr=a1[i];
ptr*=5;
cout<<"The Elements"<<" "<< i <<" "<<" after multiplying 5 is =="<<*ptr;
}}
*ptr=a1[i];
ptr*=5;
第一行。你取消了对一个指针的引用,而这个指针没有指向任何地方(它没有被初始化)。这是错的,会导致未定义的行为。你试图将一个指针赋值给一个 int
当没有 int
.
第二行: 你不能取消对指针的引用。你将指针的值乘以 5
当你真正想乘以 int
所指 5
(记住:没有 int
指向)。)
这里不需要指针。
for (int i=0;i < s1;i++) {
int value = a1[i];
value *= 5;
cout<<"The Elements"<<" "<< i <<" "<<" after multiplying 5 is =="<<value;
}
而且条件也是错误的。它应该是 i < s1
.
最后但并非最不重要的是,不要在C++中使用C-数组。它们很难使用,而且容易出错。最好是使用 std::array
对于固定大小的数组和 std::vector
为动态大小。实际上 int arr[size];
不是标准的C++,见 为什么可变长度数组不是C++标准的一部分?