现用malloc建立了double** a用来表示二维数组,如何获取a的行数和列数
时间: 2024-09-07 14:06:52 浏览: 45
要使用malloc建立一个二维数组并获取其行数和列数,你需要在动态分配内存时记录这些信息。以下是一个示例代码,展示了如何进行这样的操作:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows, cols;
printf("请输入二维数组的行数和列数: ");
scanf("%d %d", &rows, &cols);
// 分配行指针
double **a = (double **)malloc(rows * sizeof(double *));
if (a == NULL) {
// 处理分配失败的情况
return 1;
}
// 为每一行分配列空间
for (int i = 0; i < rows; i++) {
a[i] = (double *)malloc(cols * sizeof(double));
if (a[i] == NULL) {
// 处理分配失败的情况
return 1;
}
}
// 在这里可以对a进行操作
// 获取行数和列数
int stored_rows = rows;
int stored_cols = cols;
// 输出获取到的行数和列数
printf("二维数组的行数为:%d\n", stored_rows);
printf("二维数组的列数为:%d\n", stored_cols);
// 释放分配的内存
for (int i = 0; i < rows; i++) {
free(a[i]);
}
free(a);
return 0;
}
```
在这个示例中,我们首先通过用户输入获取行数和列数,然后先分配一个指向指针的指针`double **a`,再通过循环为每一行分配列空间。存储行数和列数的信息`stored_rows`和`stored_cols`用于之后获取这些参数。
阅读全文