1,一维数组
#include<stdio.h>
int main()
{
int arr[10] = {
0 };
int* pArr = arr;
for (int i = 0; i < 10; i++)
{
arr[i] = i + 1;
}
for (int i = 0; i < 10; i++)
{
printf("%d ", *arr + i);
}
return 0;
}
2,二维数组
#include<stdio.h>
int main()
{
int arr[5][5] =
{
1,2,4,5,6,
1,2,4,5,6,
1,2,4,5,6,
1,2,4,9,6,
1,2,4,7,6
};
int* pArr = (int *)arr;
for (int i = 0; i < 25; i++)
{
printf("%d ", *(pArr+i));
}
printf("\n");
printf("%d", arr[3][4]);
printf(" %d", *(pArr + 3 * 5 + 4));
return 0;
}
3,C语言优化后数组
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int* pArr;
int len;
int maxLen;
void initArr();
void push(int data);
void travel();
int main()
{
initArr();
for (int i = 0; i < 10; i++)
{
push(i);
}
travel();
return 0;
}
void initArr()
{
pArr = NULL;
len = 0;
}
void push(int data)
{
if (len >= maxLen)
{
maxLen = maxLen + (((maxLen >> 1) > 1) ? (maxLen / 2) : 1);
int* pNew = (int*)malloc(sizeof(int) * maxLen);
if (NULL != pArr)
{
memcpy(pNew, pArr, sizeof(int) * len);
free(pArr);
}
pArr = pNew;
}
pArr[len++] = data;
}
void travel()
{
printf("--:");
for (int i = 0; i < len; i++)
{
printf("%d ", pArr[i]);
}
}
4,C++数组
//头文件
#pragma once
#include<iostream>
using std::cout;
using std::endl;
template<class T>
class MyVector
{
public:
MyVector();
~MyVector();
void push(const T& data);
void travel()const;
private:
T* pArr;
size_t len;//当前元素个数 size
size_t maxLen;//当前容量capacity
};
template<class T>
inline MyVector<T>::MyVector()
{
pArr = NULL;
len = maxLen = 0;
}
template<class T>
inline MyVector<T>::~MyVector()
{
if (pArr)
{
delete[] pArr;
}
pArr = NULL;
len = maxLen = 0;
}
template<class T>
inline void MyVector<T>::push(const T& data)
{
//判断是否需要申请内存
if (len >= maxLen)//需要
{
//计算需要申请多大的内存
maxLen = maxLen + (((maxLen >> 1) > 1) ? (maxLen / 2) : 1);
//1,申请内存
//int* pNew = (int*)malloc(sizeof(int) * maxLen);
T* pNew = new T[maxLen];
if (NULL != pArr)
{
//之前有数据
//原来的数据拷贝过来
memcpy(pNew, pArr, sizeof(T) * len);
//释放原来内存
delete[] pArr;
}
//pArr指向新开内存
pArr = pNew;
}
//2,数据进来
//3,len自增
pArr[len++] = data;
}
template<class T>
inline void MyVector<T>::travel() const
{
cout << "__" << ":";
for (size_t i = 0; i < len; i++)
{
cout << pArr[i] << " ";
}
}
//源文件
#include<stdio.h>
#include"MyVector.h"
#include<iostream>
using namespace std;
class FenShu
{
public:
FenShu() {}
FenShu(int fz, int fm = 4)
{
fenzi = fz;
fenmu = fm;
}
friend ostream& operator<<(ostream& o, const
FenShu& fs);
private:
int fenzi;
int fenmu;
};
int main()
{
MyVector<int> vInt;
MyVector <FenShu> vFs;
for (int i = 0; i < 10; i++)
{
vInt.push(i);
vFs.push(FenShu(i));
}
vInt.travel();
vFs.travel();
return 0;
}
ostream& operator<<(ostream& o, const FenShu& fs)
{
return o <<"("<< fs.fenzi << "/" << fs.fenmu<<")";
}