为什么我的函数打印地址而不是数组的内容?

时间:2015-03-13 15:18:20

标签: c++ arrays void shift

我的代码应该删除指定的值并移动数组。当我运行代码时,它会打印一个地址而不是数组的内容。我的代码出了什么问题?

using namespace std;
void arrayShift(int arr[], int length, int value) {
  for(int i = 0; i<length; i++) {
    if(arr[i] == value) {
      for (int k = i; k<length-1 ; k++) {
        arr[k] = arr[k+1];
      }
      arr[length-1] = 0;
      i--;
    }
  }
  cout << arr;
}

int main() {
  int inputarr[]={9,8, 9, 9, 9, 9, 6};
  int length = 7;
  int value = 9;
  arrayShift(inputarr,length,value);
}

1 个答案:

答案 0 :(得分:3)

该行

cout << arr;

显示地址,因为cout不直接显示数组。

您应该使用for来显示所有值。这样的事情:

for(int i = 0 ; i < length ; i++)
    cout << arr[i];

但是你真的应该把输出(for cout)放在main函数中。