二级指针的传递和应用

Posted cheshl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二级指针的传递和应用相关的知识,希望对你有一定的参考价值。

#include <iostream>

using namespace std;

/*
最近在写一个程序的时候用到了二级指针作为函数参数的情况,就在函数内部如何操作二级指针为数组做以下探讨:

无非有两种使用方式 a[i][j] or *((type *)a + i*col + j);

先看下面的测试源码:
*/

void test(int col, double **a)
{
	int i, j;
	for (i = 0; i < col; i++)
	{
		for (j = 0; j < col; j++)
		{
			a[i][j] = 2.0;
		}
	}
}

void test_1(int col, double **a)
{
	int i, j;
	for (i = 0; i < col; i++)
	{
		for (j = 0; j < col; j++)
		{
			*((double *)a + i * col + j) = 2.0;
		}
	}
}

void main()
{
	int i, j, col;

	cout << "Please input a number must less than 5" << endl;
	cin >> col;
	double ** a;
	a = new double*[col];

	double a_1[5][5];

	for (i = 0; i < col; i++)
	{
		a[i] = new double[col];
	}
	for (i = 0; i < col; i++)
	{
		for (j = 0; j < col; j++)
		{
			a[i][j] = 1.0;
			a_1[i][j] = 10.0;
		}
	}

	//test(col, a);        // 1. pass

    //test(5,a_1);    // 2. error无法从double[5][5]转换为double**,因为不知道5  5大小

    //test_1(col,a);    // 3. error  第一行和第二行不是连续的

    //test_1(5,a_1);    // 4. error 无法从double[5][5]转换为double**,因为不知道5  5大小


	delete[] a[0];
	delete[] a[1];
	delete[] a;
	cout << "Done!" << endl;
}

  

以上是关于二级指针的传递和应用的主要内容,如果未能解决你的问题,请参考以下文章

为啥在访问二级指针时出现分段错误错误? C语言

c拾遗-二级指针数组内函数

c拾遗-二级指针数组内函数

二级指针的应用

C/C++中二级指针传递参数个人遇到内存值发生改变现象的记录及相关修正方法

C/C++中二级指针传递参数个人遇到内存值发生改变现象的记录及相关修正方法