C++中给二维指针分配内存(实现代码)_C 语言

原理就不写在这里了,毕竟网上的介绍有很多,代码如下所示:

复制代码 代码如下:

#include <iostream>
using namespace std;

#define  N  5
#define  M  10

int main(int argc, char **argv)
{
 int **p;
 int i,j;

 p = new int* [N];
 for (i = 0; i < N; i++)
  p[i] = new int [M];

 for (i = 0; i < N; i++)
  for (j = 0; j < M; j++)
   p[i][j] = i + j;

 for (i = 0; i < N; i++)
 {
  for (j = 0; j < M; j++)
  { 
   cout<<"["<<p[i][j]<<"]"<<"  ";
   cout<<*(*(p + i) + j)<<" "<<endl;
  }
  cout<<endl;
 }

 for (i = 0; i < N; i++)
 {
  delete [] p[i];
  p[i] = NULL;
 }

 delete [] p;
 p = NULL;

 return 0;
}

时间: 2024-09-12 22:39:46

C++中给二维指针分配内存(实现代码)_C 语言的相关文章

C++二维指针动态分配内存连续问题

当我们定义一个二维指针时,如果需要存储相应的数据,就需要我们动态的分配内存,这时,有一点是需 要注意的,分配内存的方法不同,内存的连续性也是不相同的,首先,博主先贴出测试代码: #include <cstdlib> #include <iostream> using namespace std; #define nWidth 3 #define nHeight 4 //内存是否连续分配问题 int main(int argc, char *argv[]) { int **p = N

二维指针动态分配内存连续问题深入分析

当我们定义一个二维指针时,如果需要存储相应的数据,就需要我们动态的分配内存,这时,有一点是需要注意的,分配内存的方法不同,内存的连续性也是不相同的   首先,小编先贴出测试代码: 复制代码 代码如下: #include <cstdlib> #include <iostream> using namespace std; #define nWidth  3 #define nHeight 4 //内存是否连续分配问题 int main(int argc, char *argv[])

二维指针动态分配内存连续问题深入分析_C 语言

首先,小编先贴出测试代码: 复制代码 代码如下: #include <cstdlib>#include <iostream>using namespace std;#define nWidth  3#define nHeight 4//内存是否连续分配问题 int main(int argc, char *argv[]){    int **p = NULL;    p = (int**)malloc(nWidth*sizeof(int*));    if(p == NULL)  

探讨C++中数组名与指针的用法比较分析_C 语言

指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用.但是数组名有些地方又不同于指针.这里将数组名与指针用法的不同做一下总结(有些资料来自互联网),不妥之处,还望指正!(本文程序在WIN32平台下编译):1.数组名和指向那个数组的指针,地址相同,但大小不同用例子来说明: 复制代码 代码如下: #include "stdafx.h"#include <iostream>using namespace std;int _tmain(int

C++中一维数组与指针的关系详细总结_C 语言

对于数组int a[10];a表示数组的第一个元素的地址,即&a[0]; 如果使指针p,指向数组的首元素,可以进行操作:int * p=a;或者int *p=&a[0]; 那么p++,是指向数组中的先一个元素,即a[1];此时*p则是a[1]中所放的值.此时,a[i]=p[i]=*(a+i)=*(p+i) 下面举一个例子:直接用a[i]来输出 复制代码 代码如下: #include<iostream>using namespace std;int main(){ int a[1

如何通过函数指针调用函数(实现代码)_C 语言

说明:指针可以不但可以指向一个整形,浮点型,字符型,字符串型的变量,也可以指向相应的数组,而且还可以指向一个函数. 一个函数在编译的时候会被分配给一个入口地址.这个函数入口地址称为函数的指针.可以用一个指针变量指向函数,然后通过该指针变量调用此函数. 定义指向函数的指针变量的方法是: 复制代码 代码如下: int (*p) (int ,int ); int[指针变量p指向的函数的类型] (*p)[p是指向函数的指针变量] ( int,int )[p所指向的形参类型]; 与函数的原型进行比较 复制

二维数组 引用-Java中的二维数组的引用问题

问题描述 Java中的二维数组的引用问题 代码: public static void main(String args[]){ double[][] a={{1,2,3},{4,5,6},{7,8,9}}; System.out.println(a+" "+a[0]); } 结果: [[D@15db9742 [D@6d06d69c 疑惑:二维数组名a的引用和a[0]的引用有什么不同? 解决方案 您好,a是一个二维数组,a的引用就是整个二维数据对象,a[0]则是二维数组中的第一个对象{

《从缺陷中学习C/C++》——6.12 二维数组的内存泄露

6.12 二维数组的内存泄露 从缺陷中学习C/C++代码示例 int main() { int **pVal = new int* [2]; for(int i = 0; i < 2;i++){ pVal[i] = new int[3]; } delete [] pVal; return 0; } 现象&结果二维数组的释放,没有将每个元素逐一释放,造成内存泄露.使用valgrind检测工具检测,可以得到类似的信息,LEAK SUMMARY: definitely lost: 24 bytes

struct-对结构体中的二维数组赋值为何会影响下一排

问题描述 对结构体中的二维数组赋值为何会影响下一排 #include "stdio.h" struct qipan { char point[20][80]; bool isClear; }; qipan board; int main() { for(int i=0;i<=19;i++) for(int j=0;j<=79;j++) board.point[i][j]=' '; board.point[1][1] = board.point[1][2]=board.poi