指针数组数组指针动态数组笔记

指针数组

指针数组,看最后两个字,数组

指针数组是一个数组,不过这个数组优点特别,它的里面存放的是地址。
它的声明方式如下

int *a[10]

数组指针

数组指针,看最后两个字,指针

数组指针是一个指针,这个指针指向的是一个数组。数组指针也称行指针。
声明方式:

int (*p)[10];//该语句是定义一个数组指针,指向含10个元素的一维数组

动态数组定义

数组的大小在编译时可能还是未知的,他们随着函数调用的变化而变化,因此,对这些数组只能进行动态存储分配。

一维动态数组定义

例如,一个长度为n的一维浮点数数组可以按如下方式来创建

float *x = new float[n];

二维数组定义

要构造这样的二维数组,可以把它看做是由若干行所构成的结构,每一行都是一个能用new来创建的一维数组。指向每一行的指针保存在另外一个一维数组之中。

int **a = new int* [row];
for(int i=0;i<row;i++)
{
a[i] = new int [n];
}

相当于生成一个m*n的二维数组

例子:

#include<iostream>
#include<stdlib.h>

using namespace std;


int main()
{
	int row, column,onearr;
	cout << "请输入二维数组的行数与列数,并以空格隔开:" << endl;
	cin >> row >> column;

	cout << "请输入一维数组的列数" << endl;
	cin >> onearr;


	//申请空间
	int **a = new int*[row];
	for (int i = 0; i < row; i++)
	{
		a[i] = new int [column];
	}

	//使用空间
	for (int j = 0; j < row; j++)
	{
		for (int k = 0; k < column; k++)
		{
			a[j][k] = rand() % 100;
		}
	}

	//遍历空间
	for (int j = 0; j < row; j++)
	{
		cout << endl;
		for (int k = 0; k < column; k++)
		{
			cout << a[j][k] << " ";
		}
	}
	cout << endl;

	//一维动态数组
	int *d = new int[onearr];
	for (int i = 0; i < onearr; i++)
	{
		d[i] = rand() % 100;
	}
	for (int i = 0; i < onearr; i++)
	{
		cout << d[i] << endl;
	}



	//释放内存
	for (int i = 0; i < row; i++)
	{
		delete[]a[i];
	}

	delete []d;//一维数组内存释放
	//for (int i = 0; i < onearr; i++)
	//{
	//	delete[]d;
	//}



	a = NULL;
	d = NULL;//放置变成野指针
	system("pause");

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值