现在的位置: 首页 > 综合 > 正文

C++中动态申请二维数组

2018年02月19日 ⁄ 综合 ⁄ 共 1524字 ⁄ 字号 评论关闭

这里主要介绍C++中动态申请二维数组的两种方式,直接给出代码,很容易明白,简单的作为一个笔记。

#include <iostream>
#include <iomanip>         // 输入输出操纵  
#include <vector>
using namespace std;


// 法一:new 方式申请
void dynamicArray()
{
	int rows, cols;
	cin >> rows >> cols;
	int **element = new int* [rows];    // 申请二维动态数组
	int i;
	for (i = 0; i < rows; i++)
		element[i] = new int[cols];

	int j;
	for(i = 0; i < rows; i++)               // 初始化
	{
		for (j = 0; j < cols; j++)
		{
			cin >> element[i][j];		
		}
	}
	for (i = 0; i < rows; i++)
	{
		for(j = 0; j < cols; j++)
		{
			cout << setw(4) << element[i][j];   // 每个输出占四个字符,前面以空格填充
			//cout << setfill('*') << element[i][j];  // 空格以*填充
		}
		cout << endl;
	}

	for(i = 0; i < rows; i++) // 释放动态数组
	{
		delete []element[i];
	}
	delete []element;

}

// 法二:vector 方式  没用new无需释放
void dynamicArray2()
{
	int rows, cols;
	cin >> rows >> cols;
	vector<vector<int>> element(rows, vector<int>(cols));  // 用vector申请二维动态数组
	int i,j;
	for(i = 0; i < rows; i++)               // 初始化
	{
		for (j = 0; j < cols; j++)
		{
			cin >> element[i][j];		
		}
	}
	for (i = 0; i < rows; i++)
	{
		for(j = 0; j < cols; j++)
		{
			cout << setw(4) << element[i][j];   // 每个输出占四个字符,前面以空格填充
			//cout << setfill('*') << element[i][j];  // 空格以*填充
		}
		cout << endl;
	}

}
  cout << "d5 = " << fixed<<setprecision(2)<< d5 << endl;   保留小数点两位

参考blog:1:http://www.cnblogs.com/China3S/p/3616938.html

2:http://blog.sina.com.cn/s/blog_afe2af380101b4gz.html

二维数组a[m][n]

a+i是指向a[i]的指针,而a[i]是指向a[i][0]的指针,所以*(a+i)与a[i] 及&a[i][0]等同。但是C中规定a+i及&a[i]的内容与*(a+i), a[i]一样。。。 http://c.biancheng.net/cpp/html/2930.html

int *p[4] 为指针数组;;而int (*p)[4]为数组指针。 http://blog.csdn.net/lu597203933/article/details/39404565

char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; 
char **cp[] = { c+3, c+2, c+1, c }; 
char ***cpp = cp; 
 
int main(void)
{ 
    printf("%s", **++cpp); 
    printf("%s", *--*++cpp+3); 
    printf("%s", *cpp[-2]+3); 
    printf("%s\n", cpp[-1][-1]+1); 
    return 0;
}

结果为:POINTERSTEW

抱歉!评论已关闭.