我试图从指向数组的双指针获取2D数组的行数和列数.
#include <stdio.h>
#include <stdlib.h>
void get_details(int **a)
{
int row = ??? // how get no. of rows
int column = ??? // how get no. of columns
printf("\n\n%d - %d", row,column);
}
Run Code Online (Sandbox Code Playgroud)
上面的功能需要打印大小的细节,哪里出错了.
int main(int argc, char *argv[])
{
int n = atoi(argv[1]),i,j;
int **a =(int **)malloc(n*sizeof(int *)); // using a double pointer
for(i=0;i<n;i++)
a[i] = (int *)malloc(n*sizeof(int));
printf("\nEnter %d Elements",n*n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("\nEnter Element %dx%d : ",i,j);
scanf("%d",&a[i][j]);
}
get_details(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用malloc来创建数组.
如果我使用这样的东西怎么办?
column …
如果我编译下面的代码,我会收到这样的警告:
警告:内置函数memset的不兼容隐式声明[默认启用]
void transform(int **a, int m, int n)
{
int *row = malloc(m*sizeof(int));
int *col = malloc(n*sizeof(int));
memset(row, 0, sizeof(row));
memset(col, 0, sizeof(col));
[...]
Run Code Online (Sandbox Code Playgroud)