动态分配数组内存大小的问题?
来源:百度知道 编辑:UC知道 时间:2024/09/23 09:27:51
// array.h
#ifndef _array_h
#define _array_h
struct IntArray
{
int low;
int high;
int *storage;
};
bool initialize(IntArray &arr,int low,int high); // 分配空间
bool insert(const IntArray &arr,int index,int value); // 设置数组元素的值
bool fatch(const IntArray &arr,int index,int value); // 取数组元素的值
void cleanup(const IntArray &arr); // 回收数组
#endif
// array.cpp
#include "array.h"
#include <iostream>
using namespace std;
bool initialize(IntArray &arr,int low,int high)
{
arr.low=low;
arr.high=high;
arr.storage=new int[high-low+1];
if(arr.storage==NULL) return false; else return true;
}
bool insert(const IntArray &arr,int index,int value)
{
if(index<arr.low ||index>arr.high) return false;
arr.storage[index-arr.low]=value;
bool fatch(const IntArray &arr,int index,int value)
值传递
bool fatch(const IntArray &arr,int index,int &value)
引用传递
bool fatch(const IntArray &arr,int index,int *value)
指针传递(地址传递)
如果仅仅是把当前的值传入到函数,使用值传递。
如果传进去的变量修改后需要传出来,使用引用传递和指针传递。
引用传递:原变量的别名,和原变量在物理空间上是同一个东东。
指针传递:申请一个指针,指针指向原变量的物理空间,所以修改指针指向变量的数据,就等于修改原变量。
给你一个我以前写的动态数组的例子吧
//array2D.h
#ifndef ARRAY2D_H_wpf
#define ARRAY2D_H_wpf
class ARRAY2D//动态2维数组
{
private:
int *a;
unsigned int n;//行数
unsigned int m;//列数
public:
int get(unsigned int i,unsigned int j)const;
bool set(unsigned int i,unsigned int j,int aij);
ARRAY2D(unsigned int,unsigned int);
ARRAY2D(const ARRAY2D &);
~ARRAY2D();
unsigned int getrowlength() const
{
return n;
}
unsigned int getcolumnlength()const
{
return m;
}
int* operator[](unsi