c语言-双重指针定义动态二维数组

问题描述

双重指针定义动态二维数组

指针符号太多了 求解释每个指针符号
问:?二重指针 太多 求解释一下各个

p=(int **)malloc(sizeof(int *)*line);
if(NULL==p)
{
return;
}

for(i=0;i<line;i++)
{
    *(p+i)=(int *)malloc(sizeof(int)*row);
    if(NULL==*(p+i))
    {
        return;
    }
}

解决方案

首先我来看malloc做了什么,申请了一组空间,存放int型指针,返回这组空间的首地址,所以定义int **p,定义一个指向指针的指针。首地址放到p中,而p就指向了这组数,而这组数本身是指针,即定义了一个指向指针的指针了。
你可以这么考虑现在假定有一个类型是int *,申请了一组空间放int *,返回的是指向这组数的地址,是不是都是int **p了;类比int *p = (int *)malloc(sizeof(int)*num);

解决方案二:

画个图看看,p指向一块空间(竖着画),空间里面都是放的指针,然后它们又分别指向一块空间。然后你就理解为什么会取那些line啊,row了,就是二维数组啊。(ps:就不吐槽了row和column还是对应的了)

时间: 2024-09-10 06:20:12

c语言-双重指针定义动态二维数组的相关文章

C++建立动态二维数组

C++建立动态二维数组主要有两种方法: 1.使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组                           int **b=new int*[row];       //分配一个指针数组,将其首地址保存在b中                                                                for(i=0;i<row;i++)             //为指针数组的每个

指针数组与数组指针,指向二维数组怎么搞?

问题描述 指针数组与数组指针,指向二维数组怎么搞? 初学C,碰到一道题,是要求指针数组指向二维数组,并作为函数参数传递,这该如何指向? 请帮忙解答一下指针数组与数组指针两种不同的指向方法,感激不尽. 解决方案 这有什么难的. int a[100][100]; int * ptr[] = a; foo(ptr); 解决方案二: 应该这样吧: int a[100][100]; int (* ptr)[100] = a; foo(ptr); 解决方案三: 指向二维数组跟指向一维数组是一样的 解决方案四

c++中创建动态二维数组

c++ 中创建动态二维数组的程序代码 动态创建一维数组 int *arr; //it can be any other type (char, float) arr = new int[n]; //n should be integer variable 动态创建二维数组 int **arr; int N,M; cin >> N >> M; arr = new int*[N]; for(int i=0;i<N;i++) { arr[i] = new int[M]; }

可以用一个一级指针指向一个二维数组吗?

问题描述 可以用一个一级指针指向一个二维数组吗? 看到书上写的都是二级指针,如int *p[4]等等, 数组不是在内存中的存储是连续的吗, 为什么不用一级指针直接指向第一个元素呢? 解决方案 直接用一个指针,就可以完成指向数组的功能,无论数组是多少维.只是指向后,如果控制下标需要自己考虑.其实,数组名就可以认为是一个静态的指针. 解决方案二: 建议你读下这篇文章http://www.cnblogs.com/wanpengcoder/archive/2010/07/17/1779503.html

c++-C++如何创建动态二维数组,然后将二维数组的数保存到一维数组中?

问题描述 C++如何创建动态二维数组,然后将二维数组的数保存到一维数组中? //此程序是我自己编的,但是不能通过,请问这是怎么回事? #include using namespace std; int main() { int n,m,k,i,j,l; cin>>n>>m>>k; int X[][]={0}; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { X[i][j]=i*j; } int Y[]={0}; for(i=1;i

二维数组存储数据-如何定义一个二维数组和赋值,数组里面需要放【String】【List】

问题描述 如何定义一个二维数组和赋值,数组里面需要放[String][List] 我现在用多个线程处理一个List 每个线程取List里面的50条数据进行处理返回一个List.然后把线程名和返回的List放入二维数组里面. 解决方案 不用数组用map怎么样map.key=线程ID,val=处理数据集合,如果非要数组的话,你用object类型数组

返回二维数组 语言-关于调用函数返回二维数组的问题

问题描述 关于调用函数返回二维数组的问题 我想调用一个函数,返回二维数组,但是一直不对,写了一个简单的程序,还请各位大神给看一下, #include #include float*q[3];int i,j; int main() { float f[3][2],A[3][2]; float*(TIME(float E[3][2])); for(i=0;i<=2;i++) { for(j=0;j<=1;j++) {f[i][j]=j+i;printf("%fn",f[i][j

定义JavaScript二维数组采用定义数组的数组来实现_基础知识

1. javaScript没有提供直接定义二维数组的方法,但可以使用定义数组的数组来定义JavaScript二维数组:例如定义一个 4X3二维数组a可以采用如下方法: var a=new Array(); a[0]=new Array(); a[1]=new Array(); a[2]=new Array(); a[3]=new Array(); 下面是一个事例 复制代码 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/

Vector动态二维数组的疑问

问题描述 如下代码: Vector v=new Vector(); Vector<Vector> vv = new Vector<Vector>(); for(int i=0;i<2;i++){ for(int j=0;j<2;j++){ v.addElement("a");} vv.addElement(v); }system.out.println(vv.toString());我以为打印出的语句为:[[a,a],[a,a,a,a]]可是却打印出