在c++中指向数组

Pointing an array in c++?

本文关键字:数组 c++      更新时间:2023-10-16

我想在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:"ArrayPointerClass":不是类或命名空间名称c:\users\alex\documents\visual studio 2013\projects\pointeraray\pointeraray.cpp 13 1 pointerarray

错误3错误C3861:"pointingArray":找不到标识符c:\users\alex\documents\visual studio 2013\projects\pointeraray\pointeraray\ppointeraray.cpp 13 1 pointerarray

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

感谢您对的支持

没有办法在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;
}

*arr=newArray;将不起作用——你不能复制这样的C数组。您本可以像;

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

感谢大家的回答(即使有部分工作)我为自己找到了解决方案

// 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;
}