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]);
		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;//当前元素个数 size
int maxLen;//当前容量capacity
//初始化数组
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;
}
//vector容器
/* 每次需要申请内存时,给1.5倍的内存空间 如果len的1.5倍小于len+1,那就给len+1; */
void push(int data)
{
   
	//判断是否需要申请内存
	if (len >= maxLen)//需要
	{
   
		//计算需要申请多大的内存
		maxLen = maxLen + (((maxLen >> 1) > 1) ? (maxLen / 2) : 1);
		//1,申请内存
		int* pNew = (int*)malloc(sizeof(int) * maxLen);
		if (NULL != pArr)
		{
   
			//之前有数据
			//原来的数据拷贝过来
			memcpy(pNew, pArr, sizeof(int) * len);
			//释放原来内存
			free(pArr);
		}
		//pArr指向新开内存
		pArr = pNew;
	}
	//2,数据进来
    //3,len自增
	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<<")";
}