在类之间传递后的指针值

Pointer value after passing between classes

本文关键字:指针 之间      更新时间:2023-10-16

我不明白在类之间传递指针。

hasArray.cpp 生成一个数组,然后返回该数组开头的指针。

Main.cpp 声明 hasArray.cpp

编译:

g++ -c hasArray.cpp
g++ -c Main.cpp
g++ Main.o hasArray.o -o output

输出:

Inside main
Inside hasArray
Pointer: 0x7fff5ccd7a70
Array: 1, 2, 3, 4, 5, 
Pointer: 0x7fff5ccd7a70
Array: 2063291128, 32767, 49454805, 1, 2063291128, 
指针

地址在类之间传递(如我预期的那样(,但是指针位置的值发生了变化。我认为传递指针的目的是引用(相同的(内存。为什么要在内存地址更改时添加数据?

谢谢


有数组.cpp

#include <stdio.h>
#include <iostream>
#include "hasArray.h"
using namespace std;
int * hasArray::passPointer(){
    cout << "Inside hasArrayn";
    int array[5] = {1,2,3,4,5};
    int * pointer = &array[0];
    cout << "Pointer: " << pointer<< "n";
    cout << "Array: ";
    for( int i =0 ; i < 5; i++)
        cout << array[i] << ", ";
    cout << "n";
    return pointer;
}

hasArray.hpp

#ifndef _HASARRAY_H_
#define _HASARRAY_H_
#include <stdio.h>
#include <iostream>
class hasArray{
public:
    //    hasArray();
    int * passPointer();
};
#endif

主.cpp

#include <stdio.h>
#include <iostream>
#include "hasArray.h"
using namespace std;
int main(){
    cout << "Inside mainn";
    hasArray x;
    int * pointer = x.passPointer();
    cout << "Pointer: " << pointer << "n";
    cout << "Array: ";
    for( int i =0 ; i < 5; i++)
        cout << pointer[i] << ", ";
    return 0;
}

一旦程序退出函数,您声明数组(静态分配(的方式将被销毁。

您想要的方式是通过动态内存分配。您可以像这样为阵列动态分配内存:

int *array = new int[5]{1,2,3,4,5};

并简单地返回这个。只需确保之后执行delete[] array;以释放分配的内存即可。