用c ++指向一个数组?

时间:2016-01-08 03:50:28

标签: c++ arrays pointers static

我想用c ++指出一个数组,这可能吗?

我的主要代码:

#include "ArrayPointerClass.h"

#include "stdafx.h"
#include <iostream>
#include <string>

int _tmain(int argc, _TCHAR* argv[])
{
    float arr[2];

    ArrayPointerClass::pointingArray(&arr);

    return 0;
}

ArrayPointerClass.h

#pragma once
static class ArrayPointerClass
{
public:
    ArrayPointerClass();
    ~ArrayPointerClass();
    static void pointingArray(float* arr[2]);
};

ArrayPointerClass.cpp

#include "stdafx.h"
#include "ArrayPointerClass.h"


ArrayPointerClass::ArrayPointerClass()
{
}


ArrayPointerClass::~ArrayPointerClass()
{
}

void ArrayPointerClass::pointingArray(float* arr[2]){

    float newArray[2] = { 2.2f, 2.2f };
    *arr = newArray;

}

我收到了这个错误: 错误3错误C2653:&#39; ArrayPointerClass&#39; :不是类或命名空间名称c:\ users \ alex \ documents \ visual studio 2013 \ projects \ pointerarray \ pointerarray \ pointerarray.cpp 13 1 PointerArray

错误3错误C3861:&#39; pointingArray&#39;:未找到标识符c:\ users \ alex \ documents \ visual studio 2013 \ projects \ pointerarray \ pointerarray \ pointerarray.cpp 13 1 PointerArray

我知道在C ++数组中,不允许使用没有定义长度的数组。是这个原因吗?

感谢您的支持

3 个答案:

答案 0 :(得分:1)

* arr = newArray;不起作用你不能像这样复制一个C数组。 你可以做像memcpy()或std :: copy();

memcpy( newArray, arr, 2);

std::copy( newArray, newArray+2, arr);

答案 1 :(得分:1)

无法在c ++中创建静态类。 static 关键字可以应用于对象和函数。 每个数组名称都是一个指针。因此,不能在参数中给出下标。提供指针类型就足够了。

修改后的代码:

#include <iostream>
#include <string>
using namespace std;


class ArrayPointerClass
{
 public:
 ArrayPointerClass();
 ~ArrayPointerClass();
 static void pointingArray(float* arr);
};

ArrayPointerClass::ArrayPointerClass()
{
}

ArrayPointerClass::~ArrayPointerClass()
{
}

 void ArrayPointerClass::pointingArray(float* arr){

 float newArray[2] = { 2.2f, 2.2f };
 arr = newArray;

}


int main()
{
  float arr[2];

  ArrayPointerClass obj;
  obj.pointingArray(arr);

  return 0;
}

答案 2 :(得分:-2)

感谢大家的回答(即使有部分工作) 我发现自己是一个解决方案

// PointerArray.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;



int* test() {

    int size_needed = 2;

    int* a = new int[size_needed];
    a[0] = 0;
    a[1] = 0;

    return a;
}


int main()
{
    //int arr[2] = { 1, 1 };
    int* arr = test();


    for (int i = 0; i < 2; i++){
        cout << arr[i] << std::endl;
    }
    cin.get();
    return 0;
}