对多个指针申请空间,有没有简单的办法

来源:百度知道 编辑:UC知道 时间:2024/06/03 06:26:24
double **p1=(double**)calloc(r,sizeof(double));
for(int i=0;i<r;i++)
p1[i]=(double*)calloc(s,sizeof(double));
如果还有很多**p2,**p3,**p4.......
难道要
double **p2=(double**)calloc(r,sizeof(double));
for(int i=0;i<r;i++)
p2[i]=(double*)calloc(s,sizeof(double));

double **p3=(double**)calloc(r,sizeof(double));
for(int i=0;i<r;i++)
p3[i]=(double*)calloc(s,sizeof(double));

double **p4=(double**)calloc(r,sizeof(double));
for(int i=0;i<r;i++)
p4[i]=(double*)calloc(s,sizeof(double));

.....

有没有简单办法?

不能用函数,因为函数内分配地址后,退出函数单元就没了。
可以用 #define 来写“函数调用”
注意,#define my_alloc(p,r,s) {。。。} 必须写在一行里

例子如下:
#include <stdio.h>
#include <stdlib.h>

double **p1, **p2, **p3;
int r1=10,r2=20,s1=10,s2=20;
int i;

#define my_alloc(p,r,s) {p=(double**) malloc(r*sizeof(double));for(i=0;i<r;i++) p[i]=(double*) malloc(s*sizeof(double)); }

void main()
{
int i,j;
my_alloc(p1,r1,s1); // 分配 p1
my_alloc(p2,r2,s2); // 分配 p2
// 分配 p3, p4 ...
for (j=0;j<5;j++) for (i=0;i<5;i++) p1[j][i]=i;
for (j=0;j<5;j++) for (i=0;i<5;i++) p2[j][i]=i;
printf("%lf %lf",p1[2][3],p2[3][4]);
}

这个可以使用for循环嘛

#include<malloc.h>

#define M 3
#define N 3

void main()
{
double **p = (double**)malloc( sizeof(double *) * M);
int i;
for(i = 0; i < M; i++)
{
p[i] = (double*)malloc(sizeof(double) *