在类之间传递后的指针值
Pointer value after passing between classes
我不明白在类之间传递指针。
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;
以释放分配的内存即可。
相关文章:
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- AVX 指令中寄存器和指针之间的客观差异
- 为什么不同类型层次结构的指针之间的dynamic_cast定义得很好?
- 介于 [固定数组] 和 [带内存分配的指针] 之间的性能
- 类指针之间的 Qt 差异
- 指向 POD 类型的指针之间的静态转换与重新解释转换
- 按值和引用传递指针之间的区别?
- 可以在指向不同模板类实例的指针之间进行强制转换吗
- 函数指针和传递指针之间的区别
- 作为 int 传递和类内部指针之间的差异给我带来了分段错误
- 比较C 中移动和智能指针之间的习惯
- 无效指针和非初始化的指针之间的差异
- 拉链比较整数和指针之间
- 指针数组(*a)[]和双指针** a之间的差异
- ->运算符和指针 * 之间的区别 (C++)
- 在 c++ 中,指向 int 的指针和指向指向 int 的指针之间的区别是什么?
- 指针之间的强制转换运算符
- 函数对象和函数指针之间的差异
- 指针之间的运算符重载
- 两个指针之间的差异是合法的 c++17 常量表达式